GitHub Actionsを使用してNugetパッケージを自動で公開する
はじめに
GitHub Actionsを使用してNugetへのPushを自動化することを調べたときのメモです。
参考
下記記事の「Publish NuGet Package」章での内容をメインに実際に動かしながら調べました。
https://netlicensing.medium.com/publish-nuget-packages-using-github-actions-9ac5e97d07d4
手順
①".github\workflows"内にYAMLファイルを作る。
以下に示すのは、Nugetプッシュを行うYAMLファイルです。
workflow_runに実行条件を記載しています。詳細を以下に記載します。
- workflow_run:あるworkflowが完了したり、呼び出されたら起動するイベントトリガー
- workflows:["Build"]:workflowsに登録している
Build
アクションの後に実行します。 - branches:[ main ]:mainブランチでworkflowsのアクションが行われた際に実行します。
(他のブランチは対象外となる) - types: - completed:workflowsで指定したアクションが完了時に実行します。
- workflows:["Build"]:workflowsに登録している
末尾の方のwith:
以下の内容が重要なところなので後ほど説明します。
jobsの内容については参考にした記事と同じ内容のため、そちらを参照ください。
(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度はアップロードしておかないとキーを関連付ける対象に選べないので注意)
右上のアカウント情報からAPI Keysを選択し、Createから作成する
下記のように設定し、作成する。
作成後は、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の入力項目となる要素を記述しておく必要があります。
VERSION_REGEX
はプロジェクトファイル内のPackageVersionの内容を正規表現で取り出しています。
PackageVersionだけは今後も手動で更新する必要があります。
NUGET_KEY
は${{secrets.NUGET_API_KEY}}
を指定していますが、これはGitのSettingのSecretsで指定した環境変数を取得しています。
GitのSettingsからSecretsのRepository secretsにNugetのAPIキーを設定します。右上のNew repository secretから追加できます。
ここまで設定できればmainブランチにプッシュした際にNugetに自動公開されます。
Author And Source
この問題について(GitHub Actionsを使用してNugetパッケージを自動で公開する), 我々は、より多くの情報をここで見つけました https://qiita.com/yusuke-sasaki/items/c75e32aadcd297461ef7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .