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

如何配置GitLab CI Pipeline在develop合并到main后执行标签迁移脚本?

在GitLab CI中实现develop合并到main后自动迁移标签

要实现合并完成后触发标签迁移脚本,你不需要用merged results pipeline(那是合并前的预检查流水线),而是要配置main分支的push流水线,并通过条件判断确保只在develop合并过来时执行作业。

具体配置示例

在你的.gitlab-ci.yml中添加以下作业:

migrate-tags:
  stage: deploy  # 根据你的流水线阶段调整,比如build、post-deploy等
  only:
    - main
  script:
    # 验证最近的提交是否是从develop合并过来的合并提交
    - |
      # 获取develop分支的最新提交哈希
      DEVELOP_HASH=$(git rev-parse origin/develop)
      # 检查最近的合并提交是否包含develop的哈希作为父提交
      if git log --merges -1 --pretty=format:"%p" | grep -q "$DEVELOP_HASH"; then
        echo "开始执行标签迁移..."
        # 替换成你的实际标签迁移脚本,示例:
        # 1. 获取develop上的所有标签,同步到main分支(强制覆盖同名标签)
        # git fetch origin develop --tags
        # git tag -l | xargs -I {} git tag -f {} main
        # git push origin --tags -f
      else
        echo "跳过标签迁移:最新提交不是从develop合并的"
        exit 0
      fi
  tags:
    - your-runner  # 替换为你的GitLab Runner标签(如果需要指定)

关键说明

  1. 分支限制:only: [main]确保作业只在main分支的流水线中运行,避免其他分支触发。
  2. 合并来源校验:通过git命令校验最近的合并提交是否来自develop分支,避免main分支直接push代码时误触发脚本。
  3. 权限配置:确保执行作业的Runner拥有仓库的读写权限(需要能拉取develop分支、推送标签到远程仓库),可以在CI/CD变量中配置带有推送权限的GIT_TOKEN。

替代方案(如果不需要严格校验来源)

如果只要main分支有新提交(不管是否来自develop)就执行迁移,可以简化配置,去掉脚本中的校验逻辑:

migrate-tags:
  stage: deploy
  only:
    - main
  script:
    echo "执行标签迁移..."
    # 你的迁移脚本

内容的提问来源于stack exchange,提问作者smxh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 01:03:26