.NET の環境変数を一覧確認するために開発した「Enviewer」の CI/CD 環境を、Azure Pipelines から GitHub Actions に変更しました。
Enviewer についてはこちらをご覧ください。
元々 Enviewer の CI/CD 環境は Azure Pipelines を使用していました。
CI/CD 環境の移行時に、NuGet へのプッシュを以下のように変更しました。
やること | Azure Pipelines でのコマンド | GitHub Actions でのコマンド |
---|---|---|
リストア | dotnet restore |
dotnet restore |
ビルド | dotnet build |
dotnet build |
テスト | dotnet test |
dotnet test |
パッケージング | dotnet pack |
dotnet pack |
NuGet へのプッシュ | nuget.exe push |
dotnet nuget push |
移行に加えてやったこととして、
- Environment と Secrets の登録
- NuGet の API キーを登録するためです
- https://docs.github.com/ja/actions/security-guides/encrypted-secrets
- global.json の作成
- actions/setup-dotnet@v3 で使用するため
- 単体テストプロジェクトを
net6.0
に移行した
なお、 パッケージを nuget.org に登録する (dotnet nuget push
) 際、すでに登録されているバージョンが存在する場合は、 HTTP 409 (Conflict) が返ります。
開発途中のようにバージョン番号が変更されない状態でワークフローがどんどん動くときなど、毎度失敗されては困ります。
それを回避するための対応を2つ加えました。
dotnet nuget push
におけるコンフリクトを警告扱いにして回避する--skip-duplicate
オプションの追加dotnet nuget push ... --skip-duplicate
origin/main
ブランチのときだけパッケージングとプッシュを行うための条件を追加if: github.ref == 'refs/heads/main'
これで origin/main に変更が加えられたタイミングだけ、パッケージを nuget.org への登録を行えるようになりました。
GitHub Actions のワークフローファイルの全体はこちらになります。