はじめに
最終的に仕上がったものは以下のリポジトリで公開してあります。
分からないことがあったときは参考にしてください。
手順
以下、UnityとGitHub Actionsを使って自動テストを行う手順です。
1. プロジェクトを用意する
適当にテストが含まれるプロジェクトのリポジトリを用意します。
2. ULFファイルを入手する
UnityライセンスをアクティベートするためのULFファイルを入手します。
この手順に関しては別の記事として書かせてもらいました。(GUIのみで簡単にできます)
3. ULFファイルをSecretsに登録する
- プロジェクトリポジトリの
Settings > Secrets
メニューを選択する。 -
New repository secret
ボタンをクリックする。 - Nameに
"UNITY_LICENSE"
と入力し、ValueにULFファイルの中身をコピペする。 -
Add secret
ボタンをクリックする。
これでULFファイルの中身は非公開のまま、環境変数として扱うことができます。
4. テストを走らせるためのYAMLファイルを記述する
.github/workflows/
フォルダ下(例)にTest.yaml
ファイル(名前は何でもいい)を作成し、そこにテストを走らせるための処理を記述します。
Test.yaml
name: Test
on: [push, pull_request]
jobs:
test:
name: ${{ matrix.testMode }} on ${{ matrix.unityVersion }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
projectPath:
- .
unityVersion:
- 2020.3.1f1 # Secretsに登録したULFのUnityバージョンを記入
testMode:
- playmode
- editmode
steps:
# Checkout
- uses: actions/checkout@v2
with:
lfs: true
# Cache
- uses: actions/cache@v2
with:
path: ${{ matrix.projectPath }}/Library
key: Library-${{ matrix.projectPath }}
restore-keys: |
Library-
# Test
- uses: game-ci/unity-test-runner@v2
id: tests
env:
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
with:
projectPath: ${{ matrix.projectPath }}
unityVersion: ${{ matrix.unityVersion }}
testMode: ${{ matrix.testMode }}
artifactsPath: ${{ matrix.testMode }}-artifacts
checkName: ${{ matrix.testMode }} Test Results
# Upload Artifact
- uses: actions/upload-artifact@v2
if: always()
with:
name: Test results for ${{ matrix.testMode }}
path: ${{ steps.tests.outputs.artifactsPath }}
5. GitHub Actionsでテストを走らせる
上記のTest.yaml
の場合だと、PushまたはPull RequestをするたびにGitHub Actionsでテストが実行されます。
さいごに
最終的に仕上がったリポジトリです。詰まったときは参考にしてみてください。
CIは初めてであまり詳しくないので、間違えているところがあれば教えてもらえると幸いです。