TFS でビルド時にアプリケーションのバージョン番号に日付とビルド回数を設定する
したいこと
MSBuild でバージョン番号を付与したい
今回設定したいバージョン番号
- ApplicationVersion=1.0.20170926.1
1 0 20170926 1 - - - - | | | | | | | `-- その日にビルドした回数(翌日にリセット) | | `------------ ビルドした日付 | `--------------- とりあえず固定 `------------------ とりあえず固定
TFS で使用できる変数について
事前に定義されている変数の一覧は下記で参照できる
https://docs.microsoft.com/ja-jp/vsts/build-release/concepts/definitions/build/variables?tabs=batch
ユーザー定義の変数も設定可能
TFSにブラウザから直接設定することも可能
- これだと動的に設定が出来ない?
Batch, PowerShell, Shell を作成して、ビルドステップにて実行して動的に変数を設定
- 例えば、日付を変数に設定する PowerShell の例
$date=$(Get-Date -Format 'yyyy-MM-dd'); Write-Host "##vso[task.setvariable variable=date]$date"
- この PowerShell をタスクの一つにして、起動すれば、
$(date)
でビルド時に使用可能
その日のビルドした回数はどうやって取得するか
- 下記のページを参考にして、回数を取得できそうな PowerShell が記載されている https://intovsts.net/2015/08/24/tfs-build-2015-and-versioning/ https://gist.github.com/pietergheysens/14d7d98547fe35470d0e
$buildNumber = $env:BUILD_BUILDNUMBER if ($buildNumber -eq $null) { $buildIncrementalNumber = 0 } else { $splitted = $buildNumber.Split('.') $buildIncrementalNumber = $splitted[$splitted.Length - 1] }
$(Build.BuildNumber)
の.
で分割した2つ目から取得できそうじゃ
$(Build.BuildNumber)
の1つ目が何か出力して確認してみる
20170926.1
- 自分が欲しい値そのままではないか。。。
まとめ
というわけで、今はこの設定でビルドしてる
/p:ApplicationVersion=1.0.$(Build.BuildNumber)