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

如何阻止Azure Pipelines因自动版本提交触发重复运行?

解决Business Central扩展CI/CD版本更新触发重复流水线的问题

针对你遇到的自动版本更新提交触发流水线循环的问题,有几个实用的解决方案,你的自定义提交信息思路是可行的,具体落地方式如下:

方案1:用提交信息关键词跳过流水线触发

这是最常用的方案,大部分CI/CD平台(Azure DevOps、GitHub Actions、GitLab CI等)都支持通过提交信息中的特定关键词自动跳过流水线运行。

操作步骤:

  1. 在自动更新版本并提交的脚本中,给提交信息加上指定关键词,比如[skip ci]:
# 假设已完成app.json的version字段更新
git add app.json
git commit -m "chore: bump version to 1.0.0.1 [skip ci]"
git push origin main
  1. 部分平台无需额外配置,识别到[skip ci]就会自动跳过触发;如果平台不支持自动识别,可在流水线配置中添加判断逻辑,比如Azure DevOps的yaml示例:
trigger:
  branches:
    include:
      - main

steps:
- script: |
    # 获取最新提交的信息
    COMMIT_MSG=$(git log --format=%B -n 1 HEAD)
    # 检查是否包含跳过关键词
    if echo "$COMMIT_MSG" | grep -q "\[skip ci\]"; then
      echo "流水线因提交含[skip ci]关键词终止"
      exit 0
    fi
  displayName: '检查提交信息是否跳过流水线'

方案2:用专用CI用户提交,排除该用户的触发

创建一个专门用于CI操作的机器人账号,用该账号提交版本变更,然后在流水线配置中排除该用户的提交触发流水线。

操作示例(Azure DevOps):

trigger:
  branches:
    include:
      - main
  # 排除CI机器人用户的提交触发
  excludeUsers:
    - 'ci-auto-bot@your-org.com'

操作示例(GitHub Actions):

on:
  push:
    branches:
      - main
    # 仅当提交者不是CI机器人时触发流水线
    if: github.actor != 'ci-auto-bot'

方案3:优化版本管理逻辑(更优思路)

如果不想修改提交触发规则,也可以调整版本更新的时机:

  • 不在流水线运行时提交版本变更到main分支,而是将版本号作为流水线变量动态生成(比如基于流水线运行次数、Git标签生成),直接用这个动态版本号构建扩展,无需修改提交app.json。
  • 仅在正式发布阶段,再将最终版本号提交到main分支,减少不必要的提交,从根源避免循环触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 06:25:01