🔄
AppVeyor で PowerShell Core モジュールのバージョンを書き換える
以前、次の記事を書きました。
この方法でも問題ありませんが、せっかくなのでビルドごとにバージョン番号を書き換えたいと考えました。
AppVeyor にはビルド時にアセンブリ バージョンを書き換える機能が提供されています。.NET Framework だけでなく .NET Core にも対応しています。詳細は公式ドキュメントを参照してください。
アセンブリ バージョンについてはこの方法で対応できますが、PowerShell Core モジュールの場合は psd1 ファイルも書き換える必要があります。こちらは自分で対応する必要があるため、ビルド スクリプトを作成します。
dotnet restore --source https://api.nuget.org/v3/index.json
dotnet publish --configuration Release
Update-ModuleManifest -Path "${env:APPVEYOR_BUILD_FOLDER}\bin\Release\netcoreapp2.1\publish\${env:APPVEYOR_PROJECT_NAME}.psd1" -ModuleVersion $env:APPVEYOR_BUILD_VERSION
ファイル パスは環境に合わせて適宜書き換えてください。Update-ModuleManifest で既存の psd1 ファイルの内容を更新できるため、AppVeyor の環境変数からバージョン番号を受け取って設定します。たとえば appveyor.yml ファイルに以下のように記載しておくと、マイナー バージョンやメジャー バージョンを上げる際にも一元管理できるようになります。
version: '1.0.0.{build}'
なお、PowerShell Core のライブラリは NuGet からも入手できるようになっています。
Discussion