快速配置Azure DevOps代理服务器(CentOS 7)

Azure DevOps非常好用,但是代理服务器的配置相对有点麻烦而且易出问题,接下来笔者分享一下如何快速配置Azure DevOps的代理服务器。值得注意的是,本文以CentOS 7为例,故在开始之前,请先准备好CentOS 7服务器。

下载Linux代理

在Azure DevOps的代理池管理界面,我们可以下载Linux代理的安装包:

点击下载按钮,下载到本地。

上传到目标代理服务器(CentOS 7)

我们可以使用WinSCP工具将安装包上传到目标服务器:

上传完成后,可以执行以下命令创建目录并解压:

mkdir myagent && cd myagent
tar zxvf /root/vsts-agent-linux-x64-2.153.1.tar.gz

解压之后,可以看到如图所示的目录。

安装依赖

解压之后,我们需要检查并安装必备的依赖:

./bin/installdependencies.sh

 

配置代理

安装完成之后,我们就可以配置代理了。我们可以手工配置,也可以使用脚本配置。无论哪种配置方式,均需要执行“./config.sh”脚本:

不过这块有几个注意事项。

“Must not run with sudo”问题

如出现“Must not run with sudo”提示导致无法执行,则编辑改文件,移除以下脚本:

if [ $user_id -eq 0 -a -z "$AGENT_ALLOW_RUNASROOT" ]; then
echo "Must not run with sudo"
exit 1
fi

验证类型说明

  • Alternate 基本身份验证
  • Integrated Windows集成身份验证,不支持 macOS 和 Linux.
  • Negotiate (默认) 通过Windows身份验证方案(例如NTLM或Kerberos)以登录用户以外的用户身份连接到TFS或Azure DevOps Server。选择此模式后,系统将提示输入凭据。
  • PAT 令牌验证,需创建令牌

相关详细的配置可以参考:https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-linux?view=azure-devops#unattended-config

一次次手工配置太麻烦,我们可以直接使用脚本配置。

使用脚本配置

参考脚本如下所示:

./config.sh --unattended --url https://Azure DevOPS域名 --auth negotiate --userName 用户名 --password 密码 --pool default

如上面脚本所示:

  • 使用–unattended指定了使用命令行参数配置
  • 使用–url指定了Azure DevOps服务器域名
  • 使用--auth <type>指定了身份验证类型
  • –userName指定用户名
  • –password指定密码
  • –pool指定代理要加如的代理池名称
  • 其他参数均使用默认参数

安装代理服务并启动

代理可以通过命令行的方式运行,但是不便于无人值守。我们可以将代理安装为服务并启动:

sudo ./svc.sh install
sudo ./svc.sh start

启动之后,就可以在代理池看到我们的代理服务器了:

 

安装Git 2.9.0以上版本(必须)

这里我们使用IUS来进行安装。注意:IUS是一个yum存储库,为RHEL和CentOS提供了较新版本的精选软件。

在开始之前,我们需要安装IUS:

yum install \
https://repo.ius.io/ius-release-el7.rpm \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm -y

然后我们可以在此地址去找我们需要的包了:

https://github.com/search?q=org%3Aiusrepo+topic%3Arpm&s=updated

比如Git我们可以使用此库的包:https://github.com/iusrepo/git224

go:

yum install -y git224

由于网络问题,请耐心等待。

安装和配置Docker

如果需要用到Docker构建,则必须安装Docker。这里直接使用快捷脚本安装:

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

接下来我们配置加速器以及Docker服务:

mkdir /etc/docker

cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF mkdir -p /etc/systemd/system/docker.service.d
systemctl daemon-reload
systemctl enable docker
systemctl restart docker

至此,代理就基本上配置完成,可以尽情的构建了:

快速配置Azure DevOps代理服务器的更多相关文章

  1. 在Azure DevOps Server (TFS)中实现VUE项目的自动打包

    概述 Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架.由于它在数据绑定.页面展示和使用简单方面有很大的优势,逐渐被越来越多的前端开发团队使用.本文 ...

  2. Azure Terraform(五)利用Azure DevOps 实现自动化部署基础资源

    一,引言 上一篇我们结合学习 Azure Traffic Manger 的内容,做了一个负载均衡的基础设施架构.通过 Terraform 部署执行计划,将整个 Azure Traffic Manage ...

  3. Azure DevOps(一)基于 Net6.0 的 WPF 程序如何进行持续集成、持续编译

    一,引言 我们是否正在为如何快速的编译.部署客户端应用程序而烦恼?这也是博主最近遇到的问题.目前博主所在公司主要做项目级的定制化开发,多以 C/S 架构的 WPF 程序为主,每次到了协助开发团队给实施 ...

  4. Azure Data Factory(三)集成 Azure Devops 实现CI/CD

    一,引言 由于上一节文章内容过长,无法分享Azure Data Factory 的持续集成,持续发布.今天将着重介绍一下在使用 Azure DevOps Pipeline 发布,自动进行持续集成,并且 ...

  5. Azure Terraform(七)利用Azure DevOps 实现自动化部署基础资源(补充)

    一,引言 之前一篇文章有讲解到利用 利用Azure DevOps 实现自动化部署基础资源,当时 TF 代码没有针对 Azure 各个资源的封装,所有的资源代码全部写在一个 main.tf 文件中.然后 ...

  6. Azure Terraform(八)利用Azure DevOps 实现Infra资源和.NET CORE Web 应用程序的持续集成、持续部署

    一,引言 上一篇讲解到利用 Azure DevOps 将整个 Azure Web App,Azure Traffic Manager profile,Azure Storage Account,Azu ...

  7. Azure Terraform(九)利用 Azure DevOps Pipeline 的审批来控制流程发布

    一,引言 Azure Pipeline 管道是一个自动化过程:但是往往我们由于某种原因,需要在多个阶段之前获得批准之后再继续下一步流程,所以我们可以向Azure Pipeline 管道添加审批!批准流 ...

  8. Azure DevOps Server 入门实践与安装部署

    一,引言 最近一段时间,公司希望在自己的服务器上安装本地版的 Azure DevOps Service(Azure DevOps Server),用于项目内的测试,学习.本着学习的目的,我也就开始学习 ...

  9. 如何利用Azure DevOps快速实现自动化构建、测试、打包及部署

    前两天有朋友问我,微软的Azure好用吗,适不适合国人的使用习惯,我就跟他讲了下,Azue很好用,这也是为什么微软云营收一直涨涨涨的原因,基本可以再1个小时内实现自动化构建.打包以及部署到Azure服 ...

  10. 为Azure DevOps Server (TFS) 配置安全访问(HTTPS with SSL)

    Contents 1. 概述 2. HTTP和HTTS比较 支持HTTP和HTTPS两种方式 要求所有连接使用HTTPS 优点: 缺点: 3. 为Azure DevOps Server 配置安全访问 ...

随机推荐

  1. PythonDay8Advance

    PythonDay8Advance 正则表达式 本身也是一个字符串,其中的字符具有特殊含义,将来我们可以根据这个字符串[正则表达式]去处理其他的字符串,比如可以对其他字符串进行匹配,切分,查找,替换等 ...

  2. Vue.js slot插槽

    1.插槽的基本用法 组件的插槽允许用户将其他组件或者html片段插入到组件当中 // App.vue <template> <div id="app"> & ...

  3. 规范LR(1)语法分析表

    前面已经实现了SLR语法分析表,但是可能会出现即使语法不是二义性文法,也存在移入/规约冲突 状态 i 包含项[A ->α ],当状态 i 出现在栈顶时,栈中的可行前缀时βα且在任何最后句型中a都 ...

  4. Net中手写 事件总线 发布订阅消息

    Net 手写 事件总线 发布订阅消息 前言 今晚打老虎 事件总线是对发布-订阅模式的一种实现.它是一种集中式事件处理机制,允许不同的组件之间进行彼此通信而又不需要相互依赖,达到一种解耦的目的.(项目的 ...

  5. 一套以用户体验出发的.NET8 Web开源框架

    前言 今天大姚给大家分享一套以用户体验出发的.NET8 Web开源框架:YiFramework. 项目介绍 YiFramework是一个基于.NET8 + Abp.vNext + SqlSugar 的 ...

  6. CCF中国开源大会,中电金信与行业共探AI技术在金融行业的应用和前景

    ​ 10月21日,以"开源联合,聚力共赢"为主题的2023 CCF中国开源大会在长沙开幕.中电金信副总经理.研究院院长况文川参加峰会,在"算力与大模型"主题论坛 ...

  7. How to Disable SELinux in Ubuntu Server/Desktop

    https://www.configserverfirewall.com/ubuntu-linux/disable-selinux-ubuntu/ In this tutorial I will ex ...

  8. Getting Started with JavaFX

    https://openjfx.io/openjfx-docs/#maven Run HelloWorld using Maven If you want to develop JavaFX appl ...

  9. Qt数据库应用20-csv文件转xls

    一.前言 最近又多了个需求就是将csv格式的文件转xls,需求一个接着一个,还好都是真实的需求,而且都是有用的需求,并不是不靠谱的需求,不靠谱的需求就比如程序自动识别手机壳颜色自动换背景颜色或者边框颜 ...

  10. Qt通用方法及类库1

    函数名 //桌面宽度高度 static int deskWidth(); static int deskHeight(); //程序文件名称+当前所在路径 static QString appName ...