LoginSignup
9
3

More than 3 years have passed since last update.

GitHub ActionsとUnity-CIで簡単CIビルド構築WebGL対応版

Last updated at Posted at 2020-12-06

こちらは Unity #2 Advent Calendar 2020 の 7日目の記事です

概要

  • GitHub Actionsでお手軽CI構築
  • Unity-CIで即ビルド実行
  • WebGL版が出力可能

GitHub Actionsを用いてWebGL版のビルドを作成します
本来はconfig用に細かな設定が必要ですが、
UnityでのActionsを統合したライブラリ Unity-CI の力を借りてお手軽にビルドまで行います
リポジトリがあれば3分でビルドできるようになります
image.png

GitHub Actionsについて

https://github.co.jp/features/actions
リポジトリの変更に基づいて設定スクリプトを走らせます
設定ファイルはymlファイルで書くことができます
リポジトリページのActionsから実行状況や履歴が確認できます

Unity-CIについて

https://unity-ci.com/docs
Unity+CIのActionsをまとめており、
GitHubだけでなくGitLabやTravis CIなどとも連携できるようです
今回はUnity-CIのGitHubのページを参考にCI構築を行います

Unityライセンス認証準備

Unity-CIのアクティベーションを参考にアクティベーションを行います
1. activation.yml を以下の内容で作成し、.github/workflows以下に置いておきます

name: Acquire activation file
on: [push]
jobs:
  activation:
    name: Request manual activation file 🔑
    runs-on: ubuntu-latest
    steps:
      # Request manual activation file
      - name: Request manual activation file
        id: getManualLicenseFile
        uses: webbertakken/unity-request-manual-activation-file@v1.1
        with:
          unityVersion: 2019.2.11f1 # ※使用するUnityのバージョンに一致させます
      # Upload artifact (Unity_vXXXX.X.XXXX.alf)
      - name: Expose as artifact
        uses: actions/upload-artifact@v1
        with:
          name: ${{ steps.getManualLicenseFile.outputs.filePath }}
          path: ${{ steps.getManualLicenseFile.outputs.filePath }}

2.コミット・プッシュを行うことでActionが実行され、Action結果のArtifactsにUnity_vXXXX.X.XXXX.alfが生成されます
Unity_vXXXX.X.XXXX.alfをダウンロードしておきましょう

Unity-CIではgableroux/unity3dのイメージを使用しているため新しすぎるバージョンは対応していない場合があります
最新バージョンはこちらから確認できます

3.マニュアルライセンスページでUnity_vXXXX.X.XXXX.alfをアップロードするとUnity_vXXXX.x.ulfがダウンロードできます

4.リポジトリページのSettings > serctes > new repository secret(https://github.com/XX/XX/settings/secrets/actions/new
)を選択
Unity_vXXXX.x.ulfの中身(xml形式)をコピーしValueに貼り付けます
secretの名前は UNITY_LICENSE にします

5.このActionは1度実行すればいいため削除しておきます

WebGLビルド

ビルドページ を参考にWebGLのビルドを行います
1. main.yml を以下の内容で作成し、.github/workflows以下に置いておきます

name: Actions 😎

on:
  pull_request: {}
  push: { branches: [main] }

env:
  UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} ※secretで設定した値が実行時に入ります

jobs:
  build:
    name: Build my project ✨
    runs-on: ubuntu-latest
    steps:
      # Checkout
      - name: Checkout repository
        uses: actions/checkout@v2

      # Cache
      - uses: actions/cache@v1.1.0
        with:
          path: Library
          key: Library

      # Build
      - name: Build project
        uses: webbertakken/unity-builder@v0.10
        with:
          unityVersion: 2019.2.11f1 ※使用するUnityのバージョンに一致させます
          targetPlatform: WebGL

      # Output
      - uses: actions/upload-artifact@v1
        with:
          name: Build
          path: build

サンプルからLFSの使用とテストを除いています

2.コミット・プッシュを行うことでActionが実行され、Action結果のArtifactsにWebGLビルドが生成されます
on: の項目で実行のトリガーがコントロールでき、今回はプルリクエストかmainブランチ更新のタイミングで実行されるようになっています

補足

実行の制限

GitHub Actionsは無料プランで2000分/月まで利用できます
ほぼ空のプロジェクトで10分/1ビルドでした
料金表

イメージのOS

今回のイメージはUbuntu版を利用しています
Unity-CIは現在Ubuntu版のみサポートしているらしいです
そのためスタンドアローン版はビルドできません
https://unity-ci.com/docs/unity-ci/docker-images
GitHub Actionsそのものは他OS(WindwosやMacOS)も選択できますが利用コストが増えるようです

限定的ではありますがビルドマシンの準備やコストが不要で、
すぐにCIビルド環境が用意できるためゲームジャムでの導入をしてみるのはいかがでしょうか?

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3