gitflow符合我们的需求,而giversion似乎也符合gitflow。但是有一件事我还不完全了解。让我解释一下困扰我的事情。
如何实现一次构建,在这里部署多个?根据所有规则,我们需要将1.3.0-unstable.x升级到prod env,导致此软件包确实在dev和test中进行了测试,但是该版本对于prod看起来有点奇怪,不是吗?当来自master分支的1.3.0从未部署到任何地方时。
问题是这样的:在git flow模型中,我应该从master的merge提交构建到发布吗?
答案并不十分令人满意:
我们使用Jenkins CI并且最近一直在尝试使用GitVersion来自动生成SemVer版本号.但是,当将GitVersion与Multibranch Pipeline作业(自动为给定的Git存储库自动构建分支和PR)组合时,我们只会遇到GitVersion对一个远程的限制(由其NormalizeGitDirectory函数强制执行).我们遇到的具体错误是:
System.ComponentModel.WarningException:已检测到2个遥控器.当在构建服务器上运行时,Git存储库应该承载一个(并且不超过一个)远程.
我们已经找到了唯一的解决方案(如博客这里)是手动删除"origin1"单片机结账后,遥控器,前,将调用GitVersion,像这样任何构建步骤:
bat 'git remote remove origin1'
Run Code Online (Sandbox Code Playgroud)
这有效,但感觉非常像黑客,并且可能不适用于任何来自源代码的PR.
那里有更好的解决方案吗?
我正在尝试配置 GitVersion 以使用发布流分支策略。
基本上,我有一个主线 Master 分支、Release、Feature 和 Fix 分支。功能和修复分支是从主分支创建的,并通过拉取请求合并回主分支。在冲刺结束时,我从 Master 创建一个发布分支,该分支将持续到下一个冲刺结束,届时将创建一个新的发布分支。Release 分支不会合并回 master 分支。它们甚至可以在创建新的发布分支后被删除。如果需要修补程序,它将在从创建并合并回 master 的 Fix 分支上开发,然后精心挑选到当前的 Release 分支中。我只在主要版本中使用 git 标签。
回到 GitVersion,我想对其进行配置,以便在创建新的发布分支时次要版本号会增加,并且当发布分支上有新的提交(从修复分支中挑选)时补丁号会增加。
有人已经这样做并且可以帮助我吗?
我正在尝试使用GitVersion的+semver:patch命令来更改我的补丁版本号,但它没有按我预期的方式工作。
我的master分支上有一个标签“2.2.0”。我在我的开发分支上做出了以下承诺:
b5d9f141 (HEAD -> develop, origin/develop) +semver:patch
75122489 Added unit test. +semver:patch
3b4e7eef (tag: 2.2.0, origin/master, master) Merge branch 'release/2.2.0'
Run Code Online (Sandbox Code Playgroud)
我正在关注GitFlow。在最近两次提交之后,我希望我的版本报告为 2.3.2,但 GitVersion 仍然将其报告为 2.3.0。
"主要次要补丁":"2.3.0"
它是如何+semver工作的,有没有什么方法可以按照我想要的方式仅使用提交消息来提高活动版本号(即无需手动标记)?
我在GitHub上创建了一个新项目,我打算将其部署到NuGet.org.
我想让初始版本'预发布'(通过主分支的AppVeyor构建).
我曾经gitversion init生成过GitVersionConfig.yaml.这个过程表明它会创建一个冗长的文件,大部分内容被注释掉,但实际上它只是创建了这个:
mode: ContinuousDeployment
branches: {}
Run Code Online (Sandbox Code Playgroud)
我需要更改什么才能获得所需的结果?
我想看看是否有一种方法可以在Mono存储库中找到唯一版本的微服务.
使用GitVersion和多个存储库,微服务版本是独一无二的.
使用GitVersion和Mono Repositories,微服务将为整个repo共享相同的版本.
有没有办法让Mono Repository Model遵循Multiple Repository模型的版本控制风格?
我看到有两个 nuget 包GitVersion.Tool和GitVersionTask
两者有什么区别,什么时候用。
我也看到GitVersion,但看起来这已被弃用,因为上次更新是两年半前。所以让我们忽略它。
我正在处理一个项目,我想标记或提供版本号。当合并发生并且我的 CI/CD 成功运行时,我希望 gitlab 在我的 gitci.yml 文件中标记 V 1.0、1.1 等。
我正在使用 Azure 管道通过 GitVersion 设置版本号。这是管道:
- task: gitversion/setup@0
displayName: 'Setup GitVersion'
inputs:
versionSpec: '5.x'
- task: gitversion/execute@0
displayName: 'Run GitVersion'
inputs:
useConfigFile: true
configFilePath: 'GitVersion.yml'
Run Code Online (Sandbox Code Playgroud)
它似乎运行没有任何问题,但补丁号从未增加。+semver: patch当我添加到提交消息时它也不起作用。
FullSemVer似乎受到了影响:0.8.0+11
但我期待:0.8.11
这是GitVersion.yml文件
next-version: 0.7.0
assembly-versioning-scheme: MajorMinorPatch
assembly-file-versioning-scheme: MajorMinorPatchTag
assembly-informational-format: '{InformationalVersion}'
mode: ContinuousDelivery
increment: Patch
continuous-delivery-fallback-tag: ci
tag-prefix: '[vV]'
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
commit-message-incrementing: Enabled
commit-date-format: 'yyyy-MM-dd'
ignore:
sha: []
merge-message-formats: {}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助。
branches:
main:
regex: ^master$|^main$
mode: ContinuousDelivery
tag: ''
increment: Patch
prevent-increment-of-merged-branch-version: true
track-merge-target: false
tracks-release-branches: false
is-release-branch: false
release:
regex: ^releases?[/-]
mode: ContinuousDelivery
tag: beta
increment: Patch
prevent-increment-of-merged-branch-version: true
track-merge-target: false
tracks-release-branches: false
is-release-branch: true
pre-release-weight: 1000
feature:
regex: ^features?[/-]
mode: ContinuousDelivery
tag: useBranchName
increment: Inherit
prevent-increment-of-merged-branch-version: false
track-merge-target: false
tracks-release-branches: false
is-release-branch: false
pull-request:
regex: ^(pull|pull\-requests|pr)[/-]
mode: ContinuousDelivery
tag: PullRequest
increment: Inherit
prevent-increment-of-merged-branch-version: false
tag-number-pattern: '[/-](?<number>\d+)[-/]'
track-merge-target: false
tracks-release-branches: false
is-release-branch: false
hotfix:
regex: ^hotfix(es)?[/-]
mode: ContinuousDelivery
tag: beta …Run Code Online (Sandbox Code Playgroud) 我有一个已提交并同步到 TFS 2015 的分支。
在构建代理上运行构建时,执行的 gitversion 命令会计算不同的版本。
在本地,我根据标签 3.10.0.202 得到 3.11.0
在构建代理上我得到 0.1.0
我觉得这种变化可能与克隆在构建代理上的完成方式有关。谁能建议这是否可能以及可能有什么区别?
注意
我正在尝试将我的 Azure DevOps Pipeline 的内部版本号从 gitversion 设置为我的 MajorMinorPatch 版本。我的 YAML 中有以下内容用于我的管道:
- task: GitVersion@5
inputs:
preferBundledVersion: false
updateAssemblyInfo: true
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
$versionInfo = '$($GITVERSION_MAJORMINORPATCH)'
Write-Host("##vso[task.setvariable variable=Version;]$versionInfo")
- script: echo %Action%%BuildVersion%
displayName: 'Set build version'
env:
Action: '##vso[build.updatebuildnumber]'
BuildVersion: '$env:Version'
Run Code Online (Sandbox Code Playgroud)
问题是当我运行我的管道时,我得到一个管道名称,如:0.1.0-alpha.70
我不知道为什么我得到 -alpha.70。我知道它们的意思,我想,但我不希望在我的版本字符串中看到它们。当我在本地运行 gitversion 时,我的 MajorMinorPatch 字符串是 0.1.0,这就是我想要看到的。谁能帮我获取这些信息?
编辑:对于任何好奇的人,我在这里包括我的 GitVersion.yml,它几乎是标准配置:
assembly-versioning-scheme: MajorMinorPatch
assembly-file-versioning-scheme: MajorMinorPatchTag
mode: ContinuousDeployment
tag-prefix: '[vV]'
continuous-delivery-fallback-tag: ''
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
commit-message-incrementing: …Run Code Online (Sandbox Code Playgroud) semantic-versioning gitversion azure-devops azure-pipelines azure-devops-extensions
我正在开发一个基于此存储库的项目
(我会问有关它的问题,但它很陈旧......)
我正在尝试执行任务,创建管道,但在此步骤中失败:
- pwsh: |
dotnet tool install --global GitVersion.Tool
Write-Output ">>>>>>>>>>>>>>>>"
dotnet-gitversion
Write-Output "<<<<<<<<<<<<<<<<"
$gitVersionObject = dotnet-gitversion | ConvertFrom-Json
$gitVersionObject.PSObject.Properties.ForEach{
Write-Host -Object "Setting Task Variable '$($_.Name)' with value '$($_.Value)'."
Write-Host -Object "##vso[task.setvariable variable=$($_.Name);]$($_.Value)"
}
Write-Host -Object "##vso[build.updatebuildnumber]$($gitVersionObject.FullSemVer)"
displayName: Calculate ModuleVersion (GitVersion)
Run Code Online (Sandbox Code Playgroud)
我发现这是 gitversion 的问题(也尝试了 AZ 任务中的 gitversion 任务)
INFO [09/23/22 11:30:47:90] HEAD points at branch 'refs/heads/gitversion-v5'.
INFO [09/23/22 11:30:47:90] End: Normalizing git directory for branch 'refs/heads/gitversion-v5' (Took: 90.63ms)
INFO [09/23/22 11:30:47:91] Begin: Loading version variables from disk …Run Code Online (Sandbox Code Playgroud) gitversion ×13
git ×8
azure-devops ×2
git-flow ×2
versioning ×2
devops ×1
git-tag ×1
gitlab ×1
jenkins ×1
json ×1
tfs-2015 ×1
version ×1