今までに、いろんな「Umbraco」パッケージを作ったので、よく公開をしている。でも、公開のための仕組みがなかったので、毎回とても時間がかかっていた。そのために、もっと便利に公開できる仕組みが欲しい!と思い、「GitHub Actions」を使ってみることにした。
僕はまだ「Umbraco 17」を使ってないけど、もうすぐ使うつもり。
だから、このガイドは「Umbraco 13」だけ。
「Umbraco 17」にアップグレードした時、この公開のシステムも変えたい。
その時、新しいブログを書くつもり。
今、僕は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 のプロパティも入れる。
これを入れると、公開がすごく楽になる。
<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のフォルダを作る。そこにフロントエンドのファイルを入れる。
.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 }}最後に、NuGet の API Key を GitHub Secrets に入れる。
(例:PRIVATE_NUGET_KEY)
それだけ!今から、毎回かいほうをして、パッケージは「NuGet」に解放する。
これで終わり!
今は、公開を作るだけで、パッケージが 「NuGet」 に公開される。
<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年