久しぶりにNuGetパッケージを公開したくなったのですが、最近だとGitHubで公開しているのならGitHub Actionsでビルドするのが簡単なようです。
最終的には作成したパッケージは nuget.org に公開するのですが、いったんprivateなNuGetリポジトリに配置して自分でテストしてから公開しようと考えました。となるとGitHub Packagesを使うのが便利そうな気がします。
ただ、気になったのがGitHub PackagesでのNuGetの認証方法で、ユーザーと平文パスワードによる認証しかサポートしていないようです。いくつか記事を確認しましたが、ユーザーと平文パスワードの組み合わせを.NET CLIで使う場合、nuget.config
ファイルを配置して対応するしかなさそうです。
GitHub Actionsの中でこのようなXMLファイルを生成するのめんどくさいな*1と思っていたら、↑の記事でWindows環境ならnuget.exe
のnuget sources add
コマンドで対応できることがわかりました*2。
そこで、Windows環境で.NET Core CLIとnuget.exeをセットアップしてパッケージングとGitHub Packageに公開するjob定義はこのようになります。ビルドのパスや、GitHub Packagesのユーザー名は適当に置き換えてください。
jobs: build: runs-on: windows-latest steps: - uses: actions/checkout@v2 - name: Setup NuGet uses: NuGet/setup-nuget@v1.0.2 with: nuget-api-key: ${{ secrets.NUGET_API_KEY }} nuget-version: latest - name: Setup .NET Core SDK uses: actions/setup-dotnet@v1 with: dotnet-version: 3.1.101 - name: Build run: dotnet build .\Serilog.Sinks.NewRelicLab.Logs\Serilog.Sinks.NewRelicLab.Logs.csproj --configuration Release - name: Pack run: dotnet pack .\Serilog.Sinks.NewRelicLab.Logs\Serilog.Sinks.NewRelicLab.Logs.csproj --output .\artifacts --configuration Release - name: Add GPR Source run: nuget sources Add -Name "GPR" -Source https://nuget.pkg.github.com/tanaka-takayoshi/index.json -UserName tanaka-takayoshi -Password ${{ secrets.GITHUB_TOKEN }} - name: Publish run: nuget push ".\artifacts\" -Source "GPR" -SkipDuplicate
これでGitHub Packageに公開できるようになりました。