[Azure DevOps] 編譯時自動修改版本號


1. 需求

在使用 Pipeline 自動化 CI/CD 流程的過程中,我還還需要自動修改程序集的版本號。這個功能 EdiWang 和LeoLaw 都寫文章講解過做法。不過我的項目基本都是 .Net Framework 項目,而且我的版本號規則也不一樣,所以這里分享一下我的做法。

我用的規則版本號規則是 [Major].[Minor].[BuildId].0,其中:

  • 進行不兼容的 API 更改時,Major 將會增加
  • 以后向兼容方式添加功能時,Minor 將會增加
  • Buildid 是一個也稱為運行 ID 的內部不可變 ID, 它在整個組織中是唯一的。
  • 第 4 位保留不用

2. 使用變量組定義 'Major' 和 'Minor'

MajorMinor 只有在發布新版后才會修改,因為同一個項目有幾個 Pipeline(測試用、發布用等),所以我將它們定義在變量組中。定義變量組的過程如下:

  1. 打開 Library 選項卡,然后點擊 + Varible group
  2. 輸入 Variable group name,這里我就隨便寫了個 'My variable group'。
  3. 啟用“Allow access to all pipelines”,允許所有 Pipeline 使用。
  4. 點擊左下角的 + Add 按鈕添加變量。如果要加密存儲,可以選擇每個變量行末尾的鎖定圖標,這樣變量的 Value 會以 ******* 的方式顯示。
  5. 最后點擊 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

更多的信息可以參考下面給出的鏈接:

Incremental Build Number for .NET Core via Azure DevOps

Azure Devops_Tfs 編譯的時候自動修改版本號 - LeoLaw - 博客園


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM