からめもぶろぐ。

俺たちは雰囲気で OAuth をやっている

AppVeyor で PowerShell Core モジュールのバージョンを書き換える

こんな記事を書いてました。

blog.karamem0.jp

これでもよかったのですが、せっかくなのでビルドするごとにバージョン番号を書き換えたいよね、ということで。

AppVeyor にはビルド時にアセンブリ バージョンを書き換える機能が提供されています。.NET Framework だけではなく .NET Core にも対応しています。詳しくは公式のドキュメントを見るのがいいと思います。

www.appveyor.com

アセンブリ バージョンについてはそれでいいのですが、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 からも入手できるようになってたんですね。

www.nuget.org