はじめに
まだ手元の作業用マシンでUnityビルドを回してませんか?
Unity2021でIL2CPPビルドが早くなったとはいえ、結構な時間のロスです。
何よりも「手元のマシンが一時的に使えなくなり作業が中断する」というのが最悪な体験です。
GitHub(←ここは何でも良い)にコードをpushしたら自動的にビルドをしてくれる。
それが2021年における最低限の開発環境だと考えているため、簡単に方法を紹介していきます。
でも高いんじゃないの?とお思い方、なんとGitHub Actionsは無料枠があります。
詳細は後述しますが、小さいプロジェクトなら毎月200回程度は無料でビルドすることが出来ちゃいます!
私事ですが、インディーゲーム開発者向けの開発効率化コンサルみたいな仕事を始めようと思っているので
「ビルド環境の構築もっと詳しく教えて」とか「こういう作業無駄だと思ってるんだけど自動化出来ない?」みたいな相談もどんどんお寄せください!
メッセージフォーム
今回の記事で話さないこと!
- iOSビルド
- これは厄介なので別記事にまとめます。でも厄介なだけでGitHub Actionsで自動化出来ます。
- 追記 : まとめました。 GitHubActionsでUnityのiOSビルドを走らせてXcodeビルドをしてApp Centerに配信するまで
GitHub Actionsについて
GitHub Actionsについては、解説記事が無限にあるのでググってください。
Game CIについて
Game CIとは、GitHub Actionsで使用できるUnityビルド用workflowをまとめてくれているリポジトリです。
今回紹介する方法では、基本的にGame CIを使用するのでもっと細かい設定がしたい!と思ったらこちらのドキュメントをご参照ください。
https://game.ci/docs/github/getting-started
セットアップ
まずUnityのライセンスをGitHub Actionsで使えるようにする必要があります。
https://game.ci/docs/github/activation
DevelopmentBuild
mainブランチにpushされたらビルドする。
以下のコードでWebGLとStandaloneWindows64のビルドが同時に走ります。
# .github/workflows/development-build.yml
name: Development build
on:
push:
branches:
- main
jobs:
build:
name: Build ${{ matrix.targetPlatform }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
targetPlatform:
- WebGL
- StandaloneWindows64
steps:
- name: Checkout repository
uses: actions/checkout@v2
- uses: actions/cache@v2
with:
path: Unity/Library
key: Library-${{ matrix.targetPlatform }}
restore-keys: |
Library-
- name: Build
uses: game-ci/unity-builder@v2
env:
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
with:
projectPath: Unity
targetPlatform: ${{ matrix.targetPlatform }}
- uses: actions/upload-artifact@v2
with:
name: Build-${{ matrix.targetPlatform }}
path: build/${{ matrix.targetPlatform }}
PullRequestのテスト
PullRequestが出たら、テストコードを走らせます。
name: PullRequest test
on: [pull_request]
jobs:
build:
name: Unity Test
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- uses: actions/cache@v2
with:
path: Library
key: Library
- name: Run tests
uses: game-ci/unity-test-runner@v2
env:
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
with:
projectPath: Unity
githubToken: ${{ secrets.GITHUB_TOKEN }}
注意点
無料枠について
GitHub Actionsには無料枠が2000分/月ついてます。
1回のビルドに10分かかるとして、200回ビルド出来ます。
1日6回計算ですね。これで十分だと感じるかは人によると思いますが。
https://docs.github.com/ja/billing/managing-billing-for-github-actions/about-billing-for-github-actions
超えても初期設定ではビルドが走らなくなるだけで勝手に課金されることはないので安心してください。
課金する場合は、Linuxは$0.008/分なので、1ビルド(=10分)、9円ぐらいです。
もっとハードに使うならセルフホストランナーという仕組みにより、自前のマシンでActionsを実行する方法も取れます。
最初は軽く無料枠で使っておきながら、将来的にハードに使うことになったときにも課金する or セルフホストランナーを準備する、という選択肢が取れるのがGitHub Actionsの良いところですね。