我在 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 来控制版本控制,因为这意味着每个管道必须运行两次才能在构建中获得正确的版本。
当前工作流程为:
1.1.0
)我当前的 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
这是我现在使用的配置,我需要/适用于问题中描述的工作流程:
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