LoginSignup
6
4

More than 3 years have passed since last update.

[GitHub Actions]GitHubにタグを作ったら自動的に.NETクラスライブラリのNuGetパッケージを公開する

Posted at

やりたいこと

ちょっとしたNETクラスライブラリをNuGetで公開したいのですが、バージョン番号の管理がちょっと面倒です。
(NuGetのバージョンと、アセンブリのバージョンと、gitのタグは合わせほうがいいです。)

やり方は色々とありますが、この記事ではなるべくシンプルに、GitHubにプッシュしたタグ(v1.0.1)をトリガーに、NuGetのpublishまでを自動的に行うようにGitHub Actionsを設定するようにしました。

事前準備

  1. NuGetでAPI Keyを作成しておく。
  2. ビルドする対象のプロジェクトのSettings -> Secrets に、NUGET_API_KEYという名前でNuGetのAPIキーを設定しておく。
  3. .csprojファイルのパッケージに関する設定は、Versionを除いて適切に設定しておく。

GitHub Actions

下記のファイルをリポジトリに追加します。

.github/workflows/release.yml
name: .NET Core

on:
  push:
    tags:
      - 'v*'

jobs:
  build:

    runs-on: ubuntu-latest
    env:
      DOTNET_NOLOGO: true

    steps:
    - uses: actions/checkout@v2

    - name: Setup .NET Core
      uses: actions/setup-dotnet@v1
      with:
        dotnet-version: 3.1.x

    - name: Install dependencies
      run: dotnet restore

    - name: Build
      run: dotnet build --configuration Release --no-restore -p:Version=${GITHUB_REF/refs\/tags\/v/}

    - name: Packaging
      run: dotnet pack --include-symbols --configuration Release --no-build --output nupkgs -p:PackageVersion=${GITHUB_REF/refs\/tags\/v/}

    - name: Nuget Push
      run:  dotnet nuget push nupkgs/*.nupkg -k ${{ secrets.NUGET_API_KEY }}  -s https://api.nuget.org/v3/index.json

GitHubのReleaseにもアップロードするなら、もう少し手直しが必要です。

簡単な解説

  • vで始まるタグがpushされた時に実行されます。
  • Windowsだとビルドが遅いのでOSはubuntuにしてます。
  • dotnetバージョンは、マイナーバージョンの指定が面倒なので3.1.xにしてます。
  • ${GITHUB_REF/refs\/tags\/v/}は、タグ名のrefs/tags/v1.0.11.0.1に置き換えます。
  • dotnet buildコマンドの-p:Version=でアセンブリのバージョンを指定しています。
  • dotnet nuget pushコマンドの-p:PackageVersion=でNuGetのパッケージのバージョンを指定しています。
  • Testは別のActionsで実行する想定です。
6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4