Azure的DevOps学习笔记二

标签: Azure 分类: 软件 创建时间:2019-10-30 02:36:09 更新时间:2024-11-15 10:49:42

这其实是这个系列的第三篇文章了,主要记录写琐碎的东西吧。

1.删除项目

点击集合DefaultCollection->管理设置

打开管理设置,然后鼠标放到项目后面,出现三个点

点击出现的三个点,选择删除即可。

2.在linux上安装部署池

在配置代理池时,以管理员身份运行以下命令

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 ,将vstsagent.tar.gz下载下来,通过rz命令上传到服务器上就好了。然后从tar -zxvf命令开始执行

(2) 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

再次运行:

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 &,按两次确定就好了。

总结,下载vstsagent.tar.gz->解压->修改config.sh和run.sh->运行下面命令:

1
2
## 注意 http://192.168.1.241/ 为你自己的devOps服务器地址
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的用户名密码->重新运行rum.sh

(6) libicu’s dependencies missing for .NET Core 3.1

按提示运行下面的命令就好了

1
./bin/installdependencies.sh

3.持续部署

持续部署的意思,就是说,自动部署。我这里以Azure自带的git仓库作为例子,讲解过程,通过我在开发时使用git push到仓库中,就自动的将代码进行打包然后部署。
(1) 点击管道->发布->项目

(2) 添加项目->选择Azure Repos仓库

(3) 选择项目,右上角的箭头,打开第一个触发器

(4) 新建阶段和任务,这里我就不多讲了,在前几篇文章中已经提到过了。

(5) 最后,使用git push推送代码到Azuer上就可以了,就会自动新建发布,然后执行相应的命令。

问题:
(1) git版本过低
以前需要编译安装,后来在CentOS8上,可以直接使用yum进行安装最新版了,简直太爽了。

1
2
## 安装了git2.27.0
dnf install git

(2) 找不到git文件

(3) 最后新建软连接
ln -s /usr/local/git/bin/git /usr/bin/git

参考文章:
1.编译安装git.md (源码编译安装,但是最新的CentOS8可以直接使用yum安装了。)

4.添加多条发布

任何一个仓库,都可以创建多条发布

这有什么作用呢?比如我有两个版本,一个服务器部署了开发版,这个版本需要在我git push的时候,自动触发,另一个是正式版,需要我手动发布,这个时候,创建两个发布就可以了。一个自动触发,一个手动新建发布。

至于在一个发布里面添加多个项目,和一个发布管道里面添加多个阶段。我是这样理解的。一个发布管道中的多个项目,意思是所有的项目都可以需要执行后面的阶段,阶段又分为并行阶段和串行阶段。并行的阶段是两个并排一起的,可以同时进行。

串行的阶段,也就是先完成前一个,然后完成后一个。

5.删除项目

点击DefaultCollection->管理设置

点击项目,后面有三个点,点击出现的删除,然后删除就好了

小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 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.
幸福是年华的沉淀,微笑是寂寞的悲伤。