AzureDevops部署组

标签: Azure 分类: 软件 创建时间:2020-04-16 08:10:57 更新时间:2025-01-17 10:39:21

1.在Windows上安装部署池

部署组的意思,和代理服务器的差不多,就是说你在要部署的服务器上安装了代理软件,这个服务器就成为了部署组的一员,你就可以在上面部署程序了。部署组的创建还是让我头疼了一会。
(1) 打开Pipeline->部署组

(2) 点击新建,输入说明

(3) 会跳到安装指导页,右侧可以选择部署到windows还是linux上,选windows,会出现在PowerShell中要执行的命令,将其复制,然后在PowerShell中粘贴回车。

注意

  • 全部复制,命令可能是执行不了的,会报错误,红色部分,注意原因是PowerShell不支持中文,把含中文的部分去掉就好了。

只粘贴后半部分:

1
If(-NOT (Test-Path $env:SystemDrive\'azagent')){mkdir $env:SystemDrive\'azagent'}; cd $env:SystemDrive\'azagent'; for($i=1; $i -lt 100; $i++){$destFolder="A"+$i.ToString();if(-NOT (Test-Path ($destFolder))){mkdir $destFolder;cd $destFolder;break;}}; $agentZip="$PWD\agent.zip";$DefaultProxy=[System.Net.WebRequest]::DefaultWebProxy;$securityProtocol=@();$securityProtocol+=[Net.ServicePointManager]::SecurityProtocol;$securityProtocol+=[Net.SecurityProtocolType]::Tls12;[Net.ServicePointManager]::SecurityProtocol=$securityProtocol;$WebClient=New-Object Net.WebClient; $Uri='https://vstsagentpackage.azureedge.net/agent/2.153.1/vsts-agent-win-x64-2.153.1.zip';if($DefaultProxy -and (-not $DefaultProxy.IsBypassed($Uri))){$WebClient.Proxy= New-Object Net.WebProxy($DefaultProxy.GetProxy($Uri).OriginalString, $True);}; $WebClient.DownloadFile($Uri, $agentZip);Add-Type -AssemblyName System.IO.Compression.FileSystem;[System.IO.Compression.ZipFile]::ExtractToDirectory( $agentZip, "$PWD");.\config.cmd --deploymentgroup --deploymentgroupname "dd" --agent $env:COMPUTERNAME --runasservice --work '_work' --url 'http://localhost:8033/' --collectionname 'DefaultCollection' --projectname 'test' --auth Integrated; Remove-Item $agentZip;
  • 代理的安装和配置,特别的慢,一度让我以为是卡住了,坚持住,坚持到最后,你终究会看到曙光的。

(4) 经过长时间等待,最后成功了。

(5) 刷新页面,回到部署组的首页,就会看到已经联机的服务器

(6) 点击集合设置,部署组,点击部署服务器的名字,打开部署服务器设置。

(7) 打开部署服务器设置,详细信息,可以将部署服务器配置到某个具体的项目。配置完成后,就可以在项目的管道中,添加部署作用了,详见AzureDevops创建和管理项目

参考文章:
1.Deployment groups

(8) 重新安装部署
要先卸载掉以前的,然后重新部署。进入agent目录,执行./config.sh remove,出现了一个输入用户名密码的地方(这个地方卡住了,结束,然后重新执行)

1
./config.sh remove

如果连接不上服务器怎么办,直接删除这个文件夹,重新配置就好了。

2.在linux上安装部署池

(1) 下载vstsagent.tar.gz文件,并解压

(2) 修改config.sh和run.sh文件,就像下面的手动安装的样子一样

(3) 执行
执行下面的配置命令,根据提示一步步的操作就好了

1
2
3
4
## 第一次执行,安装相关依赖
./bin/installdependencies.sh
## 然后执行,部署池的名称,要先在azuredev上创建好
./config.sh --deploymentpool --deploymentpoolname "部署池名称"

(5) 安装为服务并启动

1
2
3
4
5
## 以系统服务的方式安装
sudo ./svc.sh install

## 以服务的方式启动
sudo ./svc.sh start

(4) 卸载及其他命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
## 查找安装目录
find / -name svc.sh

## 查看状态
sudo ./svc.sh status

## 停止代理
sudo ./svc.sh stop

## 卸载
sudo ./svc.sh uninstall

## 移除配置,
## (1) 如果无法移除,需要先运行上面的卸载命令,然后进行服务移除。
## (2) 还有一种情况,就是如果重新安装了,服务地址已经改变了,但是使用remove命令移除的时候,就会出现长时间的连接服务器操作,这个时候怎么办呢?
## 只需要把整个config.sh所在的文件夹删除,然后重新进行上传安装配置就好了
./config.sh remove

## 重新进行安装和配置
./config.sh
参考文章:
1.uninstall the service (官网的介绍,包括启动,停止,查看状态,以及卸载等)
2.Replace an agent

注意,在安装部署池之前,一定要关闭SELinux,才能安装

第一种方法自动安装

在需要安装部署软件的服务器上(代理池其实和部署池差不多,只是名字不一样罢了),以管理员身份运行以下命令,(这个方法可能不行的)

1
mkdir azagent;cd azagent;curl -fkSL -o vstsagent.tar.gz https://go.microsoft.com/fwlink/?linkid=2066772;tar -zxvf vstsagent.tar.gz; if [ -x "$(command -v systemctl)" ]; then ./config.sh --deploymentpool --deploymentpoolname "250-dev" --acceptteeeula --agent $HOSTNAME --url http://192.168.1.241/ --work _work --auth Negotiate --runasservice; sudo ./svc.sh install; sudo ./svc.sh start; else ./config.sh --deploymentpool --deploymentpoolname "250-dev" --acceptteeeula --agent $HOSTNAME --url http://192.168.1.241/ --work _work --auth Negotiate; ./run.sh; fi

第二种方法,手动安装

(1) 下载安装包
下载的时候可能需要翻墙,否则下载的过程总是中断。直接打开:https://go.microsoft.com/fwlink/?linkid=2066772 或者是 https://vstsagentpackage.azureedge.net/agent/2.170.1/vsts-agent-linux-x64-2.170.1.tar.gz ,将vstsagent.tar.gz下载下来,通过rz命令(或者其他的工具)上传到服务器上就好了,然后从 tar -zxvf 命令开始执行解压操作。

(2) 修改config.sh和run.sh文件
Must not run with sudo

需要修改azagent下的config.sh文件中的内容(如何还是不行的话,干脆把两个文件中的四行代码都用#注释掉。)

1
2
3
4
5
6
7
8
9
10
11
## 将文件开头
if [ $user_id -eq 0 -a -z "$AGENT_ALLOW_RUNASROOT" ]; then
echo "Must not run with sudo"
exit 1
fi

## 改为
if [ $user_id -eq 0 -a -z "$AGENT_ALLOW_RUNASROOT" ] && [ "${ALLOW_RUNASROOT:-default_value}" == "default_value" ]; then
echo "Must not run with sudo"
exit 1
fi

(3) 执行安装
再次运行安装命令,其中的192.168.1.241,要换成你自己的AzureDevops Server主服务器安装地址。

1
if [ -x "$(command -v systemctl)" ]; then ./config.sh --deploymentpool --deploymentpoolname "250-dev" --acceptteeeula --agent $HOSTNAME --url http://192.168.1.241/ --work _work --auth Negotiate --runasservice; sudo ./svc.sh install; sudo ./svc.sh start; else ./config.sh --deploymentpool --deploymentpoolname "250-dev" --acceptteeeula --agent $HOSTNAME --url http://192.168.1.241/ --work _work --auth Negotiate; ./run.sh; fi

(3) 连接服务器说明

输入服务器地址,这个服务器地址,是安装了Azure DevOps的服务器地址,所以你的Azure DevOps需要可以被外网访问到。

输入服务器地址,以及用户名密码,也就是登录Azure DevOps的用户名密码

结果失败

(4) Some lines were ellipsized, use -l to show in full.
修改run.sh脚本,修改方式和修改config.sh文件一样。

(5) 重新运行run.sh,后台运行nohup sh run.sh &,按两次确定就好了(run.sh也是和修改config.sh同样的方法,也是找到这几句话,可能不是在开头,然后注释掉)。

总结,下载vstsagent.tar.gz->解压->修改config.sh和run.sh->运行下面命令:
和代理池的主要不同其实就是在./config.sh –deploymentpool —-deploymentpoolname 这个参数上,另外,安装不成功的时候,需要先执行:./bin/installdependencies.sh 命令。

1
2
## 注意 http://192.168.1.241/ 为你自己的devOps服务器地址,"250-dev"为你自己想要取的名字
if [ -x "$(command -v systemctl)" ]; then ./config.sh --deploymentpool --deploymentpoolname "250-dev" --acceptteeeula --agent $HOSTNAME --url http://192.168.1.241/ --work _work --auth Negotiate --runasservice; sudo ./svc.sh install; sudo ./svc.sh start; else ./config.sh --deploymentpool --deploymentpoolname "250-dev" --acceptteeeula --agent $HOSTNAME --url http://192.168.1.241/ --work _work --auth Negotiate; ./run.sh; fi

或者是

输入devOps安装的服务器地址->输入登录devOps的用户名密码->重新运行run.sh

问题

libicu’s dependencies missing for .NET Core 3.1

出现这个问题,直接按提示,执行:./bin/installdependencies.sh

service does not exist.

今天再次安装部署池的时候,出现了无法启动的问题。

解决方法,因为是在新的系统上安装的,安装之前要关闭SELinux。

1
2
3
4
5
6
7
8
9
10
## 查看
/usr/sbin/sestatus -v

## 临时关闭
setenforce 0

## 永久关闭
## 修改/etc/selinux/config 文件
## 将SELINUX=enforcing改为SELINUX=disabled
## 重启机器即可
参考文章:
1.查看 SELinux状态及关闭SELinux
2.SELinux prevents ./svc.sh install executing. (内容我没有看,我是通过标题,以及多次安装、卸载都无法正确的运行svc.sh,想到了是不是因为SELinux阻止了程序的启动)
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。