这是我参与11月更文挑战的第8天,活动详情查看:11月更文挑战
从 Jenkins 迁移到 Azure Pipelines
Jenkins是一种开源自动化服务器,传统上由企业安装在自己的数据中心并在本地进行管理。许多提供商还提供托管 Jenkins 托管,或者,Azure Pipelines 是一个云原生持续集成管道,提供多阶段管道的管理并构建托管在云中的代理虚拟机。
jenkins 有两种写jenkinsfils的风格,声明式和脚本式,脚本式是以前使用groovy写的,为了支持pipeline,更新了版本也支持了声明式.
根据Microsoft的文档我们可以轻松地将声明式的jenkinsfile变成让ADO-pipeline能理解的yaml文件
比如
1 | javascript复制代码pipeline { |
可以换成这样的yaml文件
原先的stage->job , 执行的命令->script
1 | yaml复制代码jobs: |
基于容器的构建
在构建管道中使用容器允许您在 docker 镜像中构建和测试,该镜像具有管道所需的确切依赖项,并且已经配置。它使您不必包含安装更多软件或配置环境的构建步骤。Jenkins 和 Azure Pipelines 都支持基于容器的构建。
例如,要在 Ubuntu 14.04(“Trusty”)容器中运行构建,然后在 Ubuntu 16.04(“Xenial”)容器中运行测试:
Jenkinsfile
Copy
1 | javascript复制代码pipeline { |
转换为azure-pipelines.yml
1 | yaml复制代码resources: |
代理选择
jenkins 使用agent
选项提供构建代理选择,以确保您的构建管道 - 或管道的特定阶段 - 在特定构建代理机器上运行。同样,Azure Pipelines 提供了许多选项来配置构建环境的运行位置。
托管代理选择
Azure Pipelines 为 Linux、Windows 和 macOS 构建提供云托管构建代理。要选择构建环境,您可以使用 vmimage
关键字。例如,要选择 macOS 版本:
1 | yaml复制代码pool: |
也指定一个container
并指定一个 docker 映像,以便对构建的运行方式进行更细粒度的控制
本地代理选择
如果您在本地托管构建代理,则可以 根据机器的架构或安装在其上的软件定义 构建代理“功能”。例如,如果您已经设置了具有这些java
功能的本地构建代理 ,那么您可以使用demands
关键字确保您的作业在其上运行 :
YAML复制
1 | yaml复制代码pool: |
环境变量
在 Jenkins 中,您通常为整个管道定义环境变量。例如,要设置两个环境变量,CONFIGURATION=debug
以及PLATFORM=x86
:
1 | ini复制代码pipeline { |
同样,在 Azure Pipelines 中,配置在 YAML 配置中使用并在作业执行期间设置为环境变量的变量:
1 | yaml复制代码variables: |
azure-pipelines.yml
1 | yaml复制代码jobs: |
成功失败时处理
Jenkins 允许您在构建完成后使用post
管道部分运行命令 。您可以指定在构建成功时(使用该success
部分)、构建失败时(使用该failure
部分)或始终(使用该always
部分)运行的命令。例如:
1 | bash复制代码post { |
同样,Azure Pipelines 具有丰富的条件执行框架,允许您根据许多条件(包括管道成功或失败)运行作业或作业步骤。
要模拟 Jenkins post
-build 条件,您可以定义基于always()
,succeeded()
或failed()
条件运行的作业:
azure-pipelines.yml
1 | yaml复制代码jobs: |
本文转载自: 掘金