はじめに
昔にGameCIを使ってGitHub Actions上でUnityのテストやビルドの自動化をする記事を書きました。しかし、UnityのLicense認証周りが変わったことで以下では動かなくなっていたため変更部分を書いておきます
Demo
以下が検証用のリポジトリです。各種詳細は以下をご覧ください。
環境
- Unity 2023.2.4f1(Personal)
- GitHub Actions
- GameCI
ライセンス認証
ライセンス、GameCIの Activation ページに沿って進めていきます。
1 . ローカルマシンにUnity Hubをインストールします。
2 . CI で使用している Unity アカウントで Unity Hub にログインします。
3 . 個人ライセンスをアクティベートします。ライセンスが表示されない場合は、Unity Hub > Preferences > Licenses > Add
と進み、Get a free personal license を選択します。
4 . 使用しているホストに応じて、Unityライセンスである.ulfファイルを以下のパスで見つけます。
Windows:Windows: C:¥ProgramData¥Unity¥Unity_lic.ulf MacMac: /Library/Application Support/Unity/Unity_lic.ulf Linux: ~/.local/share/unity3d/Unity/Unity_lic.ulf
5 . Github > <あなたのリポジトリ> > Settings > Secrets and Variables > Actionsを開きます。
以下のシークレットを追加します
- UNITY_LICENSE - (ここにライセンスファイルの内容をコピーします)
- UNITY_EMAIL - (Unityにログインするために使用するメールアドレスを追加します)
- UNITY_PASSWORD - (Unityにログインする際に使用するパスワードを追加)
6 . シートの1つを使用していないことを確認するために使用したローカルマシンのUnity Hubで個人ライセンスを返します。これを行うには、Unity Hub > Preferences > Licensesに移動し、ウィンドウにリストされているPersonal licenseでReturn licenseを選択します。
ビルドの自動化
ビルドは以下の ymlファイルを使って自動化することができます。
ファイルは、.github/workflows/build.yml
のパスに作成します
name: Build env: UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} # Controls when the action will run. on: workflow_dispatch: {} push: branches: - main paths-ignore: - '.github/**' # Triggers the workflow on push or pull request events but only for the main branch # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: build: runs-on: ubuntu-latest strategy: fail-fast: false matrix: projectPath: - . unityVersion: - 2023.2.4f1 targetPlatform: - WebGL steps: - name: Checkout uses: actions/checkout@v4.1.1 with: lfs: true clean: false # Cache - uses: actions/cache@v3.3.2 with: path: Library key: Library # Build - name: Build project uses: game-ci/unity-builder@v4.1.3 env: UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} with: unityVersion: ${{ matrix.unityVersion }} targetPlatform: ${{ matrix.targetPlatform }} # Output - uses: actions/upload-artifact@v4.0.0 with: name: Build-${{ matrix.targetPlatform }} path: build/${{ matrix.targetPlatform }}
テストの自動化
以下が Unity Test Runnerを使ったテストを自動実行する設定ファイルの例です
name: Test # Controls when the action will run. on: pull_request: branches: - main types: [opened, synchronize, reopened] # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: test: name: Run EditMode and PlayMode Test runs-on: ubuntu-latest steps: - name: Check out my unity project. uses: actions/checkout@v4.1.1 - name: Run EditMode and PlayMode Test uses: game-ci/unity-test-runner@v4.1.1 env: UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} with: projectPath: . githubToken: ${{ secrets.GITHUB_TOKEN }} unityVersion: 2023.2.4f1 # テストの実行結果をアーティファクトにアップロードして後から参照可能にする - uses: actions/upload-artifact@v4.0.0 if: always() with: name: Test results path: artifacts