GitLab CI迁移至Azure Pipelines:关键字等效映射咨询
GitLab CI到Azure Pipelines配置迁移指南:关键字映射与规则实现
一、特定作业按规则运行的实现
在Azure Pipelines中,通过作业级别的condition属性实现类似GitLab rules:if的规则判断,结合manual属性控制手动触发逻辑。核心逻辑是先通过条件表达式匹配目标场景(如合并请求),再配置作业的触发方式(自动/手动)。
二、关键字等效映射与说明
1. 预定义变量映射
- GitLab
$CI_MERGE_REQUEST_ID→ Azure Pipelines$(System.PullRequest.PullRequestId)- 仅在拉取请求(PR)触发的流水线中生效,用于标识当前PR的唯一ID。
2. 作业控制类关键字
| GitLab关键字 | Azure Pipelines等效实现 | 详细说明 |
|---|---|---|
rules:if | 作业级condition | 通过表达式判断作业是否执行,示例:condition: ne(variables['System.PullRequest.PullRequestId'], '')(匹配PR场景) |
when: manual | 作业级manual: true | 标记作业需手动触发,仅满足condition时才会出现在流水线待执行列表中 |
timeout | 作业级timeoutInMinutes | 设置作业超时时间,单位为分钟 |
interruptible: false | 流水线/作业级concurrency块 | 防止新流水线启动时中断当前作业,示例:yaml<br>concurrency:<br> group: ${{ variables['Build.SourceBranch'] }}<br> cancelInProgress: false<br> |
allow_failure: true | 作业级continueOnError: true | 标记作业失败后不中断整个流水线的执行 |
3. 工件管理类关键字
| GitLab关键字 | Azure Pipelines等效实现 | 详细说明 |
|---|---|---|
artifacts | publish任务 + artifact参数 | 将文件发布到Azure Pipelines工件仓库 |
paths | publish任务的pathtoPublish参数 | 指定要发布的文件或目录路径 |
expire_in | publish任务的retentionDays参数 | 设置工件的保留天数,示例:retentionDays: 7(对应1周) |
三、完整配置示例
示例1:PR场景下手动触发的作业
对应GitLab配置:
rules: - if: $CI_MERGE_REQUEST_ID when: manual timeout: 5 minutes interruptible: false allow_failure: true
Azure Pipelines等效配置:
jobs: pr-manual-job: # 仅在PR场景下触发 condition: ne(variables['System.PullRequest.PullRequestId'], '') # 手动触发作业 manual: true # 超时设置为5分钟 timeoutInMinutes: 5 # 允许作业失败不中断流水线 continueOnError: true # 防止同一分支PR的新流水线中断当前作业 concurrency: group: ${{ variables['Build.SourceBranch'] }}-${{ variables['System.PullRequest.PullRequestId'] }} cancelInProgress: false steps: - script: echo "Executing PR manual job"
示例2:带工件发布的作业
对应GitLab配置:
paths: - $ARTIFACTS_DIR/ expire_in: 1 week timeout: 15 minutes
Azure Pipelines等效配置:
jobs: artifact-publish-job: # 超时设置为15分钟 timeoutInMinutes: 15 steps: - script: echo "Generating artifacts to $(ARTIFACTS_DIR)" # 发布工件并设置保留1周 - publish: $(ARTIFACTS_DIR)/ artifact: build-artifacts retentionDays: 7
内容的提问来源于stack exchange,提问作者RCB
相关产品推荐
相关产品推荐

