はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】GameCIを用いてUnityのCI 環境をGitHub Actions上に構築し、Test Frameworkを実行&結果をアップロードする方法

はじめに

今回はGameCIを用いてUnityのCI 環境をGitHub Actions上に構築し、Test Frameworkを実行&結果をアップロードする方法を紹介したいと思います。

github.com

具体的には以下の2つを紹介します。

  1. GameCIを利用するための設定方法
  2. TestFrameworkをGitHub Actions上で実行する方法
実行している様子

Unityライセンスを設定する

GameCIが用意してくれているすべてのActionsはUnityのインストールが必要であり、ライセンスを適応させる必要があります。

game.ci

personalprofessionalライセンスかどうかで手順が異なるのですが、今回はpersonalのやり方を紹介したいと思います。

Unityライセンス.ulfファイルをローカルマシーンから探す

まだUnityライセンスを取得していない方は、ご自身のパソコンにUnity Hubをインストールしてpersonalライセンスを作成、CIで利用するライセンスでログインも済ませておいてください。
unity.com

Unity Hubでアクティベートしているライセンスを探す必要があります。パスはいかにあります。

Windows: C:\ProgramData\Unity\Unity_lic.ulf
Mac: /Library/Application Support/Unity/Unity_lic.ulf
Linux: ~/.local/share/unity3d/Unity/Unity_lic.ulf
Macの場合

GitHubリポジトリの設定から設定する

ライセンスの情報をリポジトリに設定します。GitHubを開いて、対象リポジトリのSettings > Secrets and Variables > Actionsを開いてください。

Settings > Secrets and Variables > Actions

Repository secretsにあるNew repository secretボタンを押し、以下の値を入力します。

  • UNITY_LICENSE - Unity_lic.ulfの中身を記載します
  • UNITY_EMAIL - ログインするためのメールアドレスを記載します
  • UNITY_PASSWORD - ログインするためのパスワードを記載します
Repository secretsを設定した様子

ワークフローの設定

正しく構築できたかTestRunnerを実行して試してみましょう。

.github/workflows上にyamlファイルを作成する

name: GitHub Actions Sample

# GitHub上でワークフローを手動実行できるようにする
on: workflow_dispatch

jobs:
    test:
        name: Run TestFramework
        runs-on: ubuntu-latest
        steps:
            # Checkout
            - name: Checkout repository
              uses: actions/checkout@v4
              with:
                lfs: true

            # Test
            - name: Run Tests
              uses: game-ci/unity-test-runner@v4
              env:
                UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
                UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
                UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
              with:
                # secrets.GITHUB_TOKENは自動生成されるので自身で設定する必要はない
                githubToken: ${{ secrets.GITHUB_TOKEN }}
                # Unity プロジェクトのバージョンを指定する(ProjectSettings/ProjectVersion.txt に記載されているバージョンを入力)
                unityVersion: 2021.3.0f1
                # TestするModeを指定する
                testMode: editmode

            # Test結果をアップロードする (デフォルトでは Test Framwork は結果を artifacts という名前のフォルダに出力)
            - name: Upload Test Results
              uses: actions/upload-artifact@v3
              if: always()
              with:
                name: Test results
                path: artifacts

ちなみに${{ secrets.GITHUB_TOKEN }}との記載がありますが、GITHUB_TOKENシークレットは自動的に作成されるので自身で設定する必要はありませんので注意してください。
自動トークン認証 - GitHub Docs

またテストの結果を確認するためにはGitHubのリポジトリ上でSettings > Actions > General > Workflow permissionsを選択し、Read and write permissionsを与えなければいけません。

権限を変更する

ワークフローを手動実行する

今回はon: workflow_dispatchのように指定しているため、GitHub上で手動で実行する必要があります。GitHub上でActoins > Workflows > [自身が定義したWorkflowの名前(GitHub Actions Sample)]を開き、Run workflowを実行すると処理が始まります。

workflowの手動実行

あとは無事に終わることを祈ります。

成功した様子

また今回のサンプルであればテスト結果としてArtifactsの欄からTest resultsをダウンロードすることができるはずです。

テスト結果