Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9266

GitHub Actionsを使用してNugetパッケージを自動で公開する

$
0
0

はじめに

GitHub Actionsを使用してNugetへのPushを自動化することを調べたときのメモです。

参考

下記記事の「Publish NuGet Package」章での内容をメインに実際に動かしながら調べました。
https://netlicensing.medium.com/publish-nuget-packages-using-github-actions-9ac5e97d07d4

手順

①".github\workflows"内にYAMLファイルを作る。

以下に示すのは、これとは別にworkflowsに登録しているBuildアクションがmainブランチへのプッシュが行われた際に実行され、成功した後にNugetプッシュを行うYAMLファイルです。末尾の方のwith:以下の内容が重要なところなので後ほど説明します。
(Buildの自動化については参考の記事の「Create Actions Workflow」章を参照ください)

name: Publish - Nuget

on:
  workflow_run:
    workflows: ["Build"]
    branches: [ main ]
    types:
      - completed

jobs:
  publish-nuget:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Setup .NET
      uses: actions/setup-dotnet@v1
      with:
        dotnet-version: 3.1.x
    - name: Install dependencies
      run: dotnet restore
      working-directory: src/SlackNotification
    - name: Build
      run: dotnet build src/SlackNotification/SlackNotification.sln --no-restore
    - name: Publish to NuGet
      uses: brandedoutcast/publish-nuget@v2
      with:
        PROJECT_FILE_PATH: src/SlackNotification/SlackNotification.csproj
        VERSION_REGEX: '^\s*<PackageVersion>(.*)<\/PackageVersion>\s*$'
        TAG_FORMAT: '*'
        NUGET_KEY: ${{secrets.NUGET_API_KEY}}

②NugetのAPIキーを作成する。

Nugetへの公開リクエストを認証するにあたり必要になります。
(APIキーを作成するにあたり、自動公開したいNugetパッケージを1度はアップロードしておかないとキーを関連付ける対象に選べないので注意)
image.png

下記のように設定し、作成する。

image.png

作成後は、APIキーをどこかにコピーしておきます。(作成したタイミングでしか確認できないため)

③YAMLファイルのwith:以下の内容を記載する。

      with:
        PROJECT_FILE_PATH: src/SlackNotification/SlackNotification.csproj
        VERSION_REGEX: '^\s*<PackageVersion>(.*)<\/PackageVersion>\s*$'
        TAG_FORMAT: '*'
        NUGET_KEY: ${{secrets.NUGET_API_KEY}}

PROJECT_FILE_PATHはプロジェクトファイルを指定しますがcsprojの方にNugetの入力項目となる要素を記述しておく必要があります。
image.png
VERSION_REGEXはプロジェクトファイル内のPackageVersionの内容を正規表現で取り出しています。
PackageVersionだけは今後も手動で更新する必要があります。

NUGET_KEY${{secrets.NUGET_API_KEY}}を指定していますが、これはGitのSettingのSecretsで指定した環境変数を取得しています
下記のように設定します。
image.png

ここまで設定できればmainブランチにプッシュした際にNugetに自動公開されます。


Viewing all articles
Browse latest Browse all 9266

Trending Articles