在本章中,将介绍3种Azure去搭建不同的pipeline的策略和具体的搭建流程,Azure Pipeline搭建,自己搭建Pipeline以及各种策略的优劣。
前提
部署的服务器是Azure VM或者是AKS。如果想用AWS部署,然后在Azure上搭建Pipeline,请关掉该页面。
Azure Pipeline Microsoft-hosted 模式
简介
Azure Pipeline中创建的各个pipeline中使用的构建机器都是由微软提供的,当创建单个pipeline的时候,Azure Pipeline就会基于你的源码给出对应的angent配置,用户可以自行修改。pipeline用于构建的agent可能是虚拟机也可能是Docker启动的,对客户来说是完全透明的,不需要客户去维护这个agent。
搭建流程
- 登录Azure Devops服务
Azure Devops - 创建pipeline 创建Pipeline
- 修改Azure Pipeline的构建文件 构建文件
微软提供的Agent列表
Image | Classic Editor Agent Specification | YAML VM Image Label | Included Software |
---|---|---|---|
Windows Server 2019 with Visual Studio 2019 | windows-2019 |
windows-latest OR windows-2019
|
Link |
Windows Server 2016 with Visual Studio 2017 | vs2017-win2016 | vs2017-win2016 |
Link |
Ubuntu 18.04 | ubuntu-18.04 |
ubuntu-latest OR ubuntu-18.04
|
Link |
Ubuntu 16.04 | ubuntu-16.04 | ubuntu-16.04 |
Link |
macOS X Mojave 10.14 | macOS-10.14 |
macOS-latest OR macOS-10.14
|
Link |
macOS X Catalina 10.15 | macOS-10.15 | macOS-10.15 |
Link |
价格
- 第一条流水线免费 30小时/月(也就是说,按照955来算,每天构建+部署时间不能超过1.5小时)
- 每增加一条新流水线 310.40港币/月
Azure Pipeline Self-hosted 模式
简介
pipeline使用的agen是自己持有的,可以为Azure Pipeline添加自己agent进行构建,用于构建新的pipeline。用户需要自己维护构建机器的信息。
搭建流程
-
配置agent,主要分为三大步骤
- 在Azure Devops平台设置访问权限
- 从Azure Devops平台下载agent,并在目标机器上配置agent
- 启动agent
详细步骤
-
创建Pipeline,步骤和上面Microsoft-hosted模式是一样的。在yaml文件中设置pool时,使用自己配置的agent
pool:
name: 'MyAgentPool'
demands:
- npm
...
价格
- 第一条流水线免费,并且想跑多久就跑多久(毕竟不一定是Azure的机器)。
- 每增加一条,116.40港币/月,比Microsoft-hosted模式便宜了一半!
Azure VM Jenkins模式
简介
该模式将Jenkins安装在Azure VM上。需要自己去配置Jenkins,也要自己去写Jenkinsfile,并且自己去集成部署。
搭建流程
- 在Azure市场中找到Jenkins的方案 Jenkins
- 创建安装了Jenkins的虚拟机。在创建过程中可以用“用户名/密码”的方式也可以用“SSH公钥”的方式登录服务器。推荐使用“SSH公钥”的方式,这样不用每次都输入密码,方便。 创建Jenkins
- 安装完成后,可以在刚刚创建时填入的资源组中找到Jenkins的相关资源,并找到“公共 IP 地址”资源,查看外网IP,可以通过http://外网IP 访问Jenkins的主页。 Jenkins主页
- 为了保证网络安全,Jenkins默认是不允许HTTP协议访问的。如果想配置服务,需要使用网页上提示的
ssh -L xxx
命令去登录到申请的虚拟机上。然后就可以正常配置Jenkins的admin用户信息,下载Jenkins的插件了。 - 如果希望使用HTTP的方式访问Jenkins。可以修改服务器上的nginx配置。将/signup 相关的url都禁用掉,这样外网用户就不能够自己创建Jenkins用户了。
修改~/etc/nginx/sites-enabled/default文件
server {
listen 80;
server_name xxx.southeastasia.cloudapp.azure.com;
error_page 403 /jenkins-on-azure;
location / {
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:8080;
proxy_redirect http://localhost:8080 http://xxx.southeastasia.cloudapp.azure.com;
proxy_read_timeout 90;
}
location ~ /signup* {
rewrite ^ /jenkins-on-azure permanent;
}
location /jenkins-on-azure {
alias /usr/share/nginx/azure;
}
}
- 配置Jenkins的用户策略 安全配置
- 当Jenkins构建时,可能需要用到一些脚本命令,如果在不使用docker agent的情况下,可以使用以下命令来去掉sudo。
sudo groupadd $CMD
sudo usermod -aG $CMD $USER
总结一波
模式 | 优点 | 缺点 | 备注 |
---|---|---|---|
Azure Pipeline Microsoft-hosted | 一键创建,简单,快捷 | 价格高,按分钟收费 | 不差钱的请使用 |
Azure Pipeline Self-hosted | 自持有的Agent比较便宜。 | 需要自己配置Agent,维护Agent的环境 | 有一定的运维能力的团队可以使用 |
Azure VM Jenkins | 便宜,灵活度高,依赖较少,出了问题可以自己解决 | 需要自己去做集成,人力成本高 | 有较高运维能力团队适用,或者预算有限的团队比较适合 |
参考资料
- https://azure.microsoft.com/en-us/pricing/details/devops/azure-devops-services/
- https://stackoverflow.com/questions/39638772/make-jenkins-run-docker-without-sudo
- https://docs.microsoft.com/zh-cn/azure/devops/pipelines/get-started/pipelines-sign-up?view=azure-devops
原文链接:https://huldoo.com/2020/02/16/azure-%e6%90%ad%e5%bb%ba-pipeline/
网友评论