【发布时间】:2019-07-10 03:50:24
【问题描述】:
我正在设置一个 Azure Pipelines 构建,它需要将 C# .NET 类库打包到 NuGet 包中。
在this documentation 中,它列出了几种自动生成 SemVer 字符串的不同方法。特别是,我想实现这个:
$(Major).$(Minor).$(rev:.r),其中Major和Minor是两个变量 在构建管道中定义。这种格式会自动 使用新补丁增加内部版本号和软件包版本 数字。它将保持主要和次要版本不变,直到您 在构建管道中手动更改它们。
但这就是他们所说的,没有提供任何例子。一个了解更多信息的链接会将您带到this documentation,上面写着:
对于
byBuildNumber,版本将设置为内部版本号,确保 您的内部版本号是正确的 SemVer,例如1.0.$(Rev:r)。如果你 选择byBuildNumber,任务会提取一个虚线版本,1.2.3.4并仅使用它,丢弃任何标签。要按原样使用内部版本号, 您应该如上所述使用 byEnvVar,并设置环境 变量为BUILD_BUILDNUMBER。
同样,没有提供示例。看起来我想使用versioningScheme: byBuildNumber,但我不太确定如何设置内部版本号,我认为它从BUILD_BUILDNUMBER 环境变量中提取它,但我找不到设置环境变量的方法, 只有脚本变量。此外,我想将其设置为1.0.$(Rev:r),还是$(Major).$(Minor).$(rev:.r)?恐怕这只会按字面意思解释。
用谷歌搜索文字字符串“versioningScheme: byBuildNumber”会返回一个结果...有没有人有使用此版本控制方案的azure-pipelines.yml?
【问题讨论】:
-
您可以做其他事情:使用 GitVersion,然后使用内部版本号格式使用
$(Build.DefinitionName)-$(GitVersion_FullSemVer)之类的东西。如果在任务中将Automatic package versioning的包选项设置为“Use an environment variable”,然后您使用的 env 变量为GITVERSION_NUGETVERSIONV2,则您的 NuGet 包将自动获得版本控制。
标签: continuous-integration azure-devops nuget azure-pipelines semantic-versioning