ホームページ
2025年12月15日

どうやって「GitHub Actions」を使って「NuGet」パッケージを公開したか

Umbraco
NuGet
パッケージ

今までに、いろんな「Umbraco」パッケージを作ったので、よく公開をしている。でも、公開のための仕組みがなかったので、毎回とても時間がかかっていた。そのために、もっと便利に公開できる仕組みが欲しい!と思い、「GitHub Actions」を使ってみることにした。

僕はまだ「Umbraco 17」を使ってないけど、もうすぐ使うつもり。

だから、このガイドは「Umbraco 13」だけ。

「Umbraco 17」にアップグレードした時、この公開のシステムも変えたい。
その時、新しいブログを書くつもり。


RCL をどう作ったか

今、僕はRazor クラス ライブラリ(RCL)を使っている。

どうやって「RCL」を作った?

まず、.csprojのファイルを変える。

もともとは:

<Project Sdk="Microsoft.NET.Sdk">

これを:

<Project Sdk="Microsoft.NET.Sdk.Razor">

に変える。

それから、同じファイルに「StaticWebAssetBasePath」を入れる。

<PropertyGroup>
	<TargetFramework>net8.0</TargetFramework>
	<StaticWebAssetBasePath>App_Plugins/PROJECT_NAME</StaticWebAssetBasePath>
</PropertyGroup>


NuGet に必要なプロパティ

同じファイルに、NuGet のプロパティも入れる。
これを入れると、公開がすごく楽になる。

<PropertyGroup>
	<PackageId></PackageId>
	<Version>1.0.0</Version>
	<Title></Title>
	<Authors></Authors>
	<PackageLicenseExpression>MIT</PackageLicenseExpression>
	<PackageProjectUrl></PackageProjectUrl>
	<RepositoryUrl></RepositoryUrl>
	<Description></Description>
	<Summary></Summary>
	<PackageTags>umbraco package umbraco-marketplace</PackageTags>
	<EmbedUntrackedSources>true</EmbedUntrackedSources>
	<IncludeSymbols>true</IncludeSymbols>
	<SymbolPackageFormat>snupkg</SymbolPackageFormat>
	<ContentTargetFolders>content</ContentTargetFolders>

	<PackageOutputPath>build/Release</PackageOutputPath>
</PropertyGroup>


wwwroot フォルダを作る

次に、wwwrootのフォルダを作る。そこにフロントエンドのファイルを入れる。


GitHub Actions の設定

.github/workflows/の中に、新しい YML ファイルを作る。

name: Release
on:
  release:
    types:
      - published
jobs:
  release_name:
    name: Publish NuGet Package
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build project
        run: dotnet build --configuration Release PROJECT_NAME
      - name: Package files
        run: dotnet pack --configuration Release  PROJECT_NAME/p:Version=${{github.ref_name}}
      - name: Publish the package
        run: dotnet nuget push PROJECT_NAME/build/Release/PROJECT_NAME.${{github.ref_name}}.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{secrets.PRIVATE_NUGET_KEY }}


GitHub Secrets を入れる

最後に、NuGet の API Key を GitHub Secrets に入れる。
(例:PRIVATE_NUGET_KEY

それだけ!今から、毎回かいほうをして、パッケージは「NuGet」に解放する。

これで終わり!
今は、公開を作るだけで、パッケージが 「NuGet」 に公開される。


.csprojの例

<Project Sdk="Microsoft.NET.Sdk.Razor">

	<PropertyGroup>
		<TargetFramework>net8.0</TargetFramework>
		<StaticWebAssetBasePath>App_Plugins/PROJECT_NAME</StaticWebAssetBasePath>
	</PropertyGroup>

	<ItemGroup>
		<PackageReference Include="Umbraco.Cms.Web.BackOffice" Version="13.0.0" />
	</ItemGroup>

	<PropertyGroup>
		<PackageId></PackageId>
		<Version>1.0.0</Version>
		<Title></Title>
		<Authors></Authors>
		<PackageLicenseExpression>MIT</PackageLicenseExpression>
		<PackageProjectUrl></PackageProjectUrl>
		<RepositoryUrl></RepositoryUrl>
		<Description></Description>
		<Summary></Summary>
		<PackageTags>umbraco package umbraco-marketplace</PackageTags>
		<EmbedUntrackedSources>true</EmbedUntrackedSources>
		<IncludeSymbols>true</IncludeSymbols>
		<SymbolPackageFormat>snupkg</SymbolPackageFormat>

		<ContentTargetFolders>content</ContentTargetFolders>

		<PackageOutputPath>build/Release</PackageOutputPath>

	</PropertyGroup>

</Project>


リンク

ヨハネス・ランツ

ヨハネス・ランツ

ウェブ開発者・経験8年

採用可能

お問い合わせ