快速配置Azure DevOps代理服务器
快速配置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
至此,代理就基本上配置完成,可以尽情的构建了:
- win7怎么去除快捷方式的小箭头
- 零基础学编程015:画些有趣的图案
- Spring boot with Thymeleaf
- 零基础学编程014:小海龟做画
- Springboot @RequestBody 传递 List
- 零基础学编程013:import让你飞起来
- 【教程】利用Tensorflow目标检测API确定图像中目标的位置
- 零基础学编程012:画出复利曲线图
- OpenAI发布高度优化的GPU计算内核—块稀疏GPU内核
- SQL SERVER 原来还可以这样玩 FOR XML PATH
- 零基础学编程011:复利数据表问题(总结)
- 一个小程序引发的思考
- 深入内核:DUMP Block的数据读取与脏数据写入影响
- 零基础学编程010:最终可以输出完整的复利数据表了
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Gradle之恋(14)-实战spring mvc插件式多项目构建
- Spring Boot 开箱即用
- Qt音视频开发2-vlc回调处理
- cmake学习
- 数据分析:在缓慢变化中寻找跳变——基于缓慢变化维度的用户分群
- 02 Confluent_Kafka权威指南 第二章:安装kafka
- Kafka集群搭建过程(kafka2.5+eagle)
- 07 Confluent_Kafka权威指南 第七章: 构建数据管道
- java中的reference(二): jdk1.8中Reference的源码阅读
- 08 Confluent_Kafka权威指南 第八章:跨集群数据镜像
- java的reference(五): WeakReference的应用之二--InheritableThreadLocal源码分析
- rabbitmq-3.7.7安装过程
- 09 Confluent_Kafka权威指南 第九章:管理kafka集群
- 关于禁止使用Executors创建线程池的分析
- ArrayList源码分析(基于jdk1.8)(一):源码及基本操作