🔄

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

2022/01/01に公開

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

https://zenn.dev/karamem0/articles/2018_03_14_120000

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

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

https://www.appveyor.com/docs/build-configuration/#net-core-csproj-files-patching

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

https://www.nuget.org/packages/System.Management.Automation

Discussion