🔄

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

に公開

以前、次の記事を書きました。

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