You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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等效实现详细说明
artifactspublish任务 + artifact参数将文件发布到Azure Pipelines工件仓库
pathspublish任务的pathtoPublish参数指定要发布的文件或目录路径
expire_inpublish任务的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 11:54:19