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

如何在Azure Pipelines中按源分支递增major/minor/patch版本号?

实现Azure Pipeline按分支自动递增版本号并构建tar.gz包

可以通过Azure Pipeline的Bash任务结合分支判断逻辑实现这个需求,以下是具体的实现方案:

核心逻辑

  1. 从版本文件(如version.txt)读取当前的major.minor.patch版本
  2. 根据触发构建的分支类型,对应递增版本段:
    • main分支:递增major,重置minor和patch为0
    • Develop分支:递增minor,重置patch为0
    • bugfix/*分支:仅递增patch
  3. 将新生成的版本号写入版本文件,并设置为Pipeline变量,供后续打包步骤使用

完整Pipeline YAML示例

trigger:
  branches:
    include:
      - main
      - Develop
      - bugfix/*

pool:
  vmImage: 'ubuntu-latest' # Linux构建服务器

steps:
  # 步骤1:读取当前版本并拆分为major/minor/patch
  - bash: |
      # 读取版本文件内容(如果文件不存在,初始化为0.0.0)
      if [ ! -f version.txt ]; then
        echo "0.0.0" > version.txt
      fi
      CURRENT_VERSION=$(cat version.txt)
      # 拆分版本段
      IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT_VERSION"
      
      # 根据分支判断版本递增逻辑
      case "$BUILD_SOURCEBRANCHNAME" in
        main)
          MAJOR=$((MAJOR + 1))
          MINOR=0
          PATCH=0
          ;;
        Develop)
          MINOR=$((MINOR + 1))
          PATCH=0
          ;;
        bugfix/*)
          PATCH=$((PATCH + 1))
          ;;
        *)
          # 其他分支不修改版本,保持当前版本
          echo "Unknown branch, keeping current version: $CURRENT_VERSION"
          ;;
      esac
      
      # 生成新版本号
      NEW_VERSION="$MAJOR.$MINOR.$PATCH"
      # 将新版本写入文件(可选,用于后续版本追踪)
      echo "$NEW_VERSION" > version.txt
      # 设置Pipeline变量,供后续步骤使用
      echo "##vso[task.setvariable variable=NEW_VERSION;]$NEW_VERSION"
      
      echo "Updated version from $CURRENT_VERSION to $NEW_VERSION"
    displayName: '自动递增版本号'

  # 步骤2:构建并打包tar.gz包,使用新版本号命名
  - bash: |
      # 假设你的项目构建产物在dist目录下,根据实际路径调整
      tar -czf "your-project-$NEW_VERSION.tar.gz" -C dist .
    displayName: '构建并打包tar.gz'

  # 可选步骤:将新版本文件提交回仓库(需要配置Pipeline的Git权限)
  - bash: |
      git config --global user.email "pipeline@example.com"
      git config --global user.name "Azure Pipeline"
      git add version.txt
      git commit -m "Bump version to $NEW_VERSION"
      git push origin "$BUILD_SOURCEBRANCHNAME"
    displayName: '提交版本文件到仓库'
    condition: in(variables['BUILD_SOURCEBRANCHNAME'], 'main', 'Develop', 'bugfix/*')

关键说明

  • 版本存储:用version.txt文件存储当前版本,首次运行会自动创建初始版本0.0.0
  • 分支匹配:BUILD_SOURCEBRANCHNAME是Azure Pipeline内置变量,直接获取当前触发构建的分支名
  • 变量传递:通过##vso[task.setvariable]命令将新版本号设为全局变量,后续步骤可直接引用$(NEW_VERSION)
  • Git提交:可选步骤用于将更新后的版本文件提交回仓库,需要确保Pipeline服务账号有仓库的推送权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:40:29