Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Build VPM package

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プロジェクトに対象のVPMPackageManifest ScriptableObjectが存在すること
  • マニフェストに次の値が設定されていること
    • name
    • displayName
    • version
    • author.name
    • author.email
    • unityPackageFolder
  • 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も作られます。これらは配布物ではありません。

VPM ZIPの配置規則

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#ソースの内容は検査しません。

リリースURL

マニフェストで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を決められない

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages