GitVersion 正确更新 master、dev、hotfix 分支的程序集版本

问题描述 投票:0回答:1

我在 Azure DevOps 管道中使用 GitVersion 来自动化部署,但是我正在努力让自动版本控制按我想要的方式工作。

分支结构是这样的:

  • master
    - 这是主分支,产品发布是从
  • 完成的
  • dev
    - 这是当前的开发版本
  • hotfix*
    - 这些是来自 master 的短期分支,用于修补程序,通常采用“hotfix-bug#99999”的形式
  • **
    - 任何开发都是在
    dev
    的分支中完成并合并回
    dev
    ,这些没有任何特定的命名约定

我想要发生的是:

  • 将请求从任何分支拉入
    dev
    更新预发布编号(例如
    1.0.0
    转到
    1.0.0-something
  • 将来自开发者的请求拉入主更新次要(例如,
    1.0.0
    转到
    1.1.0
  • 将请求从任何修补程序分支拉入主更新补丁(例如,
    1.0.0
    转到
    1.0.1

我想避免使用 git Tags 来控制版本控制,因为这意味着每个管道必须运行两次才能在构建中获得正确的版本。

当前工作流程为:

  • Pull 请求在 DevOps 中完成
  • 这会触发管道
  • 从拉取请求本地获取更改
  • 将标签添加到最新提交(例如
    1.1.0
  • 推送标签
  • 重新运行管道(现在 GitVersion 采用所需的版本号)

我当前的 GitVersion.yml 文件如下:

assembly-versioning-scheme: MajorMinorPatch
assembly-file-versioning-scheme: MajorMinorPatch
mode: ContinuousDelivery
tag-prefix: '[vV]'
continuous-delivery-fallback-tag: ci
major-version-bump-message: '\+semver:\s?(breaking|major)'
minor-version-bump-message: '\+semver:\s?(feature|minor)'
patch-version-bump-message: '\+semver:\s?(fix|patch)'
no-bump-message: '\+semver:\s?(none|skip)'
legacy-semver-padding: 4
build-metadata-padding: 4
commits-since-version-source-padding: 4
tag-pre-release-weight: 60000
commit-message-incrementing: Enabled
branches:
  develop:
    mode: ContinuousDeployment
    tag: alpha
    increment: Minor
    prevent-increment-of-merged-branch-version: false
    track-merge-target: true
    regex: ^dev(elop)?(ment)?$
    source-branches: []
    tracks-release-branches: true
    is-release-branch: false
    is-mainline: false
    pre-release-weight: 0
  main:
    mode: ContinuousDelivery
    tag: ''
    increment: Patch
    prevent-increment-of-merged-branch-version: true
    track-merge-target: false
    regex: ^master$|^main$
    source-branches:
    - develop
    - release
    tracks-release-branches: false
    is-release-branch: false
    is-mainline: true
    pre-release-weight: 55000
  release:
    mode: ContinuousDelivery
    tag: beta
    increment: None
    prevent-increment-of-merged-branch-version: true
    track-merge-target: false
    regex: ^releases?[/-]
    source-branches:
    - develop
    - main
    - support
    - release
    tracks-release-branches: false
    is-release-branch: true
    is-mainline: false
    pre-release-weight: 30000
  feature:
    mode: ContinuousDelivery
    tag: '{BranchName}'
    increment: Inherit
    regex: ^features?[/-]
    source-branches:
    - develop
    - main
    - release
    - feature
    - support
    - hotfix
    pre-release-weight: 30000
  hotfix:
    mode: ContinuousDelivery
    tag: beta
    increment: Patch
    prevent-increment-of-merged-branch-version: false
    track-merge-target: false
    regex: ^hotfix(es)?[/-]
    source-branches:
    - release
    - main
    - support
    - hotfix
    tracks-release-branches: false
    is-release-branch: false
    is-mainline: false
    pre-release-weight: 30000
ignore:
  sha: []
increment: Inherit
commit-date-format: yyyy-MM-dd
merge-message-formats: {}
update-build-number: true
git azure-devops gitversion
1个回答
0
投票

这是我现在使用的配置,我需要/适用于问题中描述的工作流程:

mode: Mainline
assembly-versioning-scheme: MajorMinorPatch
update-build-number: true
branches:
  main:
    tag: ''
    increment: Minor
    is-release-branch: true
    source-branches:
    - development
    - hotfix
  development:
    tag: beta
    increment: Patch
    regex: ^dev(elop)?(ment)?$
    is-release-branch: false
    source-branches: []
  hotfix:
    tag: ''
    increment: Patch
    regex: ^hotfix*
    is-release-branch: false
© www.soinside.com 2019 - 2024. All rights reserved.