vpm-registry-cfのCI用ステップ
次の3つを生成します。
- ScriptableObjectの
manifest.json - VPM配布用ZIPファイル
- Unityの
.unitypackageファイル
Action内でBunを利用します。実行環境にBunがなければ自動的に導入するため、呼び出すワークフロー側でNode.jsやBunを設定する必要はありません。
- GitHub ActionsのLinuxランナー、または
bash、tar、zipが利用できるセルフホストランナーで実行すること - Unityプロジェクトに対象の
VPMPackageManifestScriptableObjectが存在すること - マニフェストに次の値が設定されていること
namedisplayNameversionauthor.nameauthor.emailunityPackageFolder
unityPackageFolder以下のアセットと.metaファイルをリポジトリに含めること
対象アセットはファイル名ではなくVPMPackageManifestのスクリプトGUIDで検出します。そのため、同じ検索範囲に複数のマニフェストがある場合はpackage-nameを指定してください。
同じリポジトリにActionを置く場合の例です。リリース済みのActionを利用する場合はuses: <所有者>/<リポジトリ>@<タグ名>に置き換えてください。
name: Build package
on:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- id: package
uses: ./
with:
package-name: com.example.my-package
manifest-search-path: Assets
output-directory: build/vpm
repository-private: "false"
- uses: actions/upload-artifact@v4
with:
name: ${{ steps.package.outputs.package-name }}-${{ steps.package.outputs.version }}
path: |
${{ steps.package.outputs.manifest-path }}
${{ steps.package.outputs.zip-path }}
${{ steps.package.outputs.unitypackage-path }}| 名前 | 必須 | 既定値 | 説明 |
|---|---|---|---|
package-name |
いいえ | "" |
対象のVPMパッケージ名。検索範囲にマニフェストが1件だけなら省略できます。 |
manifest-search-path |
いいえ | Assets |
VPMPackageManifestを検索し始めるディレクトリです。 |
output-directory |
いいえ | build/vpm |
manifest.json、ZIP、.unitypackageの出力先です。 |
repository-private |
いいえ | "false" |
非公開リポジトリなら"true"を指定します。 |
| 名前 | 説明 |
|---|---|
package-name |
変換したmanifest.jsonのパッケージ名です。 |
version |
変換したmanifest.jsonのバージョンです。 |
display-name |
変換したmanifest.jsonの表示名です。 |
tag |
パッケージ名-vバージョン形式のリリースタグです。 |
manifest-path |
生成したVPM用manifest.jsonのパスです。 |
zip-path |
生成したVPM配布用ZIPのパスです。 |
unitypackage-path |
生成した.unitypackageのパスです。 |
既定の出力先では、パッケージ名をcom.example.my-package、バージョンを1.2.3とした場合、次のファイルが作成されます。
build/vpm/
├── manifest.json
├── com.example.my-package-1.2.3.zip
└── com.example.my-package-1.2.3.unitypackage
作業用のbuild/vpm/stagedとbuild/vpm/unity-package-files.txtも作られます。これらは配布物ではありません。
unityPackageFolderの内容は、配布ZIP内で次のように整理されます。
| 元の項目 | ZIP内の配置 |
|---|---|
Editor、または任意の深さのEditorフォルダー |
Editor以下 |
Runtime |
Runtime以下 |
| 上記以外の通常のアセット | Runtime以下 |
Samples~、Documentation~、Tests |
パッケージ直下 |
README.md、CHANGELOG.md、LICENSE、LICENSE.md、Third Party Notices.md |
パッケージ直下 |
Runtime用とEditor用の分類は、パスにEditorという名前のディレクトリが含まれるかで決まります。C#ソースの内容は検査しません。
マニフェストでautoGeneratePackageUrlがfalse以外の場合、生成したZIPのURLは次の形式になります。
https://github.com/<所有者>/<リポジトリ>/releases/download/<パッケージ名-vバージョン>/<パッケージ名>-<バージョン>.zip
このActionはZIPを作成しますが、GitHub Releaseの作成やZIPのアップロードは行いません。公開配布する場合は、出力されたtagのReleaseを作り、zip-pathのZIPをそのReleaseにアップロードしてください。
非公開リポジトリでrepository-private: "true"を指定すると、公開取得できないGitHub Release URLの代わりに安全なプレースホルダーURLを設定します。実際に利用可能なURLをpackage.jsonに入れたい場合は、マニフェストでautoGeneratePackageUrlをfalseにし、urlを明示してください。
- マニフェストが見つからない、または複数あり
package-nameで絞り込めない - 必須項目や
unityPackageFolderが未設定 unityPackageFolderが存在しない.unitypackageに含める.metaが1件もないautoGeneratePackageUrlが有効なのにZIPの公開URLを決められない