Azure 搭建 pipeline

在本章中,将介绍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/

你可能感兴趣的:(Azure 搭建 pipeline)