使用 Nerdbank.GitVersioning 依據 git 紀錄自動產生版號

在之前 ASP.NET Core 6 設定版本號碼 中有介紹使用預設的方式修改版本號碼,現在來介紹一個 dotnet tool ,會自動更新修訂號碼和將 git HEAD 附加在版號後方,方便確認當前版本。

安裝工具

全域安裝工具
    
dotnet tool install -g nbgv
    

附上解除安裝的指令
    
dotnet tool uninstall -g nbgv
    

使用

切換到專案路徑下,執行下面的指令初始化,會自動建立 Directory.Build.props 和 version.json
    
nbgv install
    

一開始的 version.json 應該會長這樣:
    
{
  "$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/main/src/NerdBank.GitVersioning/version.schema.json",
  "version": "1.0-beta",
  "publicReleaseRefSpec": [
    "^refs/heads/master$",
    "^refs/heads/v\\d+(?:\\.\\d+)?$"
  ],
  "cloudBuild": {
    "buildNumber": {
      "enabled": true
    }
  }
}
    

加上以下內容:
    
{
  "$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/main/src/NerdBank.GitVersioning/version.schema.json",
  "version": "1.0-beta",
  "publicReleaseRefSpec": [
    "^refs/heads/master$",
    "^refs/heads/v\\d+(?:\\.\\d+)?$"
  ],
  "cloudBuild": {
    "buildNumber": {
      "enabled": true
    }
  },
  "release" : {
    "tagName" : "v{version}",
    "branchName" : "v{version}",
    "versionIncrement" : "minor"
  }
}
    

版本號碼的三個數字分別代表: 主要版本號、次要版本號、修訂號碼。

發布時會將 json 內設定的 version 中的內容加上 commit 的次數,最後再加上版號和 git HEAD。如果 version 中有英文會放在 git HEAD 前面。
例如目前是 1.0-beta ,則版號是 1.0.0-beta+e6a1683890 (e6a1683890 為 git HEAD)

發布或是執行後再去看檔案內容就會產生產品版本號碼:

再次 commit 後發現修訂號碼增加,且 git HEAD 也有變更。

若不想要出現 "beta" ,則將 version 中的 beta 文字移除即可。
更新主要版本號、次要版本號後修訂號碼會從 1 開始

參考資料:
Github - dotnet/Nerdbank.GitVersioning
Versioning made easier with Nerdbank.GitVersioning

留言