[Azure DevOps] 编译时自动修改版本号
1. 需求#
在使用 Pipeline 自动化 CI/CD 流程的过程中,我还还需要自动修改程序集的版本号。这个功能 EdiWang 和LeoLaw 都写文章讲解过做法。不过我的项目基本都是 .Net Framework 项目,而且我的版本号规则也不一样,所以这里分享一下我的做法。
我用的规则版本号规则是 [Major].[Minor].[BuildId].0,其中:
- 进行不兼容的 API 更改时,
Major
将会增加 - 以后向兼容方式添加功能时,
Minor
将会增加 Buildid
是一个也称为运行 ID 的内部不可变 ID, 它在整个组织中是唯一的。- 第 4 位保留不用
2. 使用变量组定义 'Major' 和 'Minor'#
Major
和 Minor
只有在发布新版后才会修改,因为同一个项目有几个 Pipeline(测试用、发布用等),所以我将它们定义在变量组中。定义变量组的过程如下:
- 打开 Library 选项卡,然后点击 + Varible group。
- 输入 Variable group name,这里我就随便写了个 'My variable group'。
- 启用“Allow access to all pipelines”,允许所有 Pipeline 使用。
- 点击左下角的 + Add 按钮添加变量。如果要加密存储,可以选择每个变量行末尾的锁定图标,这样变量的 Value 会以
*******
的方式显示。 - 最后点击 Save 保存。
创建变量组后,打开要使用这个变量组的 Pipeline,然后切换到 Variables 选项卡,在左边的列表中选中 Variable groups,在打开的页面中点击 Link variable group,然后在打开的变量组列表中选中刚刚创建的变量组,点击 Link,完成后这个页面显示如下。
如果要在 YAML 上进行同样的操作,只需要在 YAML 中添加这句:
variables:
- group: My variable group
3. 使用预定义的 Build.BuildId 变量#
Azure Pipelines 提供了一批预定义变量,,用于在 Pipeline 的任务中共享常见信息。详细的预定义变量列表可以参考 预定义变量 - Azure Pipelines Microsoft Docs 这个文档。
要唯一地标识一个 Pipeline,可以参考 配置运行或生成号 这个文档中列出的变量,例如 $(Date:yyyyMMdd)$(Rev:.r)
输出为 20200828.1
,即 220年8月28日的第一次生成。
这里我选择了 Build.BuildId
作为版本号的第三位,它是每次一运行 Pipeline 都会递增的一个整数变量,而且它在整个组织中是唯一的,很适合用来做版本号。
4. 使用扩展更新版本号#
懒得考虑如何更新版本号的话,可以使用 MarketPlace 里提供的扩展来处理。我选择了 Richard Fennell’s Manifest Versioning Build Tasks Azure DevOps extension 这个扩展,安装后在添加任务的列表里输入 "Version Assemblies" 找到 Version .NET Assemblies 这个任务并点击 Add 添加这个任务。
将新添加的 Task 拖动到 Build solution 的任务之前:
然后在任务的配置表单中的 Version Number 输入框中,输入:
$(AssemblyVersion).$(Build.BuildId).0
其中 AssemblyVersion 是在变量组中定义的变量,Build.BuildId 是 AzurePipelines 预定义的变量。
上面的操作在 YAML 中相当于:
name: '1.0.0.$(Rev:r)'
steps:
- task: richardfennellBM.BM-VSTS-Versioning-Task.Version-Assemblies-Task.VersionAssemblies@2
displayName: Version the assemblies
inputs:
Path: '$(Build.SourcesDirectory)'
VersionNumber: '$(AssemblyVersion).$(Build.BuildId).0'
InjectVersion: true
FilenamePattern: 'AssemblyInfo.*'
OutputVersion: 'OutputedVersion'
5. 最后#
Pipeline 运行完毕后,输出的桌面应用程序的版本信息如下,可以看到文件版本和产品版本的版本号都已经改为 4.2.127.0:
更多的信息可以参考下面给出的链接:
作者:Dino.C
出处:https://www.cnblogs.com/dino623/p/modify-build-number-in-azure-devops.html
版权:本文采用「CC BY 4.0」知识共享许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?