3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub ActionsでUnityゲームをWebGLでCI/CDする

3
Last updated at Posted at 2025-12-11

こんにちは!Life is TechでUnityメンターをしている,やまゆです!
今回はUnityでもCI/CDができることを知ったのですが,結構詰まったところもあったので共有します!

なんでやろうと思ったか

僕は趣味で開発する時は大体Web開発をやっているんですが,最近ハッカソンと技育展に出していたプロダクトでUnityを使うことになりました.
Unityで作ったゲームをunityroomで公開していたんですが,なにか機能作るたびに毎回ビルドするのがめんどくさくなって最後の方まで更新しなくなっちゃったんですよね...
Web開発の文脈では,GitHub上でブランチがmainブランチにマージされるとCI/CDによって自動ビルド・自動デプロイをやっちゃうことが多かったので,「これをUnityでもできないか?」と考えたのがきっかけでした.

やりたいこと

PullRequestが承認されてmainブランチにマージされると,GitHub Actionsによって自動的にWebGLビルドにしてダウンロードできるようにする!
スクリーンショット 2025-12-11 13.50.44.png
上の画像のように,ビルドされたファイルをGitHubのActionsのタブからダウンロードできるところまでをゴールにします!

手順

1. unityroomで公開するための設定

今回はunityroomで公開するのがゴールなので設定しっかりやっておきましょう!
この話に関しては他にもたくさん記事があるので,参考になりそうな記事のリンク貼っておきます!

https://help.unityroom.com/build-settings
https://qiita.com/kurisaka_konabe/items/73471f00439befea807d

2. GitHubActionsを動かすためのymlファイルを書いていく

今回はgame-ciというものを使ってビルドします!

webgl-build.yml
name: WebGL Build
# コードがmainにpushされた時とpullrequestが飛んできた時に自動で実行し手動でも実行できるようにする
  
on:
  push:
    branches: 
        - main
  pull_request: 
    branches:
        - main
  workflow_dispatch: {} #手動実行のためにつけておく

# 連続して実行されたときに一つ前の実行中のジョブが停止されるようにする
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  webgl-Build:
    name: Run the unity build steps
    runs-on: ubuntu-latest
    steps:
      # Unityビルドは容量を大量に消費するため、不要なファイルを削除して空き容量を確保する
      - name: Free Disk Space
        uses: jlumbroso/free-disk-space@main
        with:
          tool-cache: false
          android: true
          dotnet: true
          haskell: true
          large-packages: true
          swap-storage: true

      # Actionsがリポジトリにアクセスできるようにする
      - name: Checkout
        uses: actions/checkout@v3
      
      # LibraryをCacheしてBuildを高速化する
      - name: Cache Library
        uses: actions/cache@v3
        with:
          path: Library
          key: Library-${{ hashFiles('Assets/**', 'Packages/**','ProjectSettings/**') }}
          restore-keys: Library-
      
      # Unityプロジェクトのビルド
      # 設定しない場合、buildフォルダに出力される
      - name: Run the WebGL build
        uses: game-ci/unity-builder@v4
        env:
          UNITY_EMAIL: ${{ secrets.UNITY_USERNAME }}
          UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
          UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
        with:
          targetPlatform: WebGL
          unityVersion: 6000.0.57f1  #ここに使うUnityのバージョンを入れる
          buildsPath: build

      # Build成果物をアップロードする
      - name: Upload artifact
        uses: actions/upload-artifact@v4
        with:
          name: build
          path: build

ざっくり何やってるかというと...

  1. Actionsが実行されるサーバー側のいらないファイルを削除
    • サーバーの制限が厳しい上にUnityが重いのでこれやっとかないと大体ビルド失敗する
  2. Github Actionsでリポジトリ扱えるようにして
  3. Libraryキャッシュしといて
  4. UnityゲームをWebGLにビルトする

使いたいプロジェクトの構成に合わせてpath等々うまいこと書き換えてください!

3. Unityのライセンスファイルを取得する

Actionsでのビルドに使用するgame-ciの中でライセンスが必要なので取得します

これら参考
https://game.ci/docs/github/activation/
https://github.com/game-ci/documentation/issues/408

「ライセンス」から 
image.png
右上の「ライセンスを加える」を押して
image.png
「無料のPersonalライセンスを取得」をクリック
image.png
同意してライセンスを追加しよう

game-ciの公式ドキュメントより

以下のフォルダに配置されている.ulfファイルを見つけてください!
Windows: C:\ProgramData\Unity\Unity_lic.ulf
Mac: /Library/Application Support/Unity/Unity_lic.ulf
Linux: ~/.local/share/unity3d/Unity/Unity_lic.ulf

こいつを次のステップで使うので、メモ帳かなんかでひらいて中身を見れるようにしといて下さい!

すでにライセンス登録していて、指定のパスに.ulfファイルが存在しない場合は今回の手順に従って取得しなおしてみてください!
もしかしたら生成されるかもです!

これでも無理だった方へ

もし以上の方法でも取得できなかったら,

4. GitHub ActionsのSecretsを設定する

Actionsで使用するSecretsを指定していく
Github->今回自動ビルドしたいリポジトリ->画面上部のSettings->画面左側のSecurity->Secrets and Variables->Actions->New repository secretsから追加する
この記事では追加したいのは

  • UNITY_USERNAME : あなたのアカウントのメールアドレス
  • UNITY_PASSWORD : あなたのアカウントのパスワード
  • UNITY_LISENCE : 手順3で取得した.ulfファイルの中身

変数名はActionsのymlファイルに書いてあるのと同じにしてください!
この記事のymlの通りだとこんな感じになってて欲しい
image.png

5. 準備完了!!あとは動かすだけ!!!

mainブランチにマージされたら自動で動くし,手動で動かしたかったらRun workflowのボタン押したら実行できます
image.png

動いて成功したやつクリックして,下の方にスクロールしていくと....
image.png
Artifactsの欄からダウンロードできます!!!

これで全部終わりです!!!!!!!お疲れ様でした!!!!!!

終わりに

CI/CDはUnityのゲーム開発の文脈ではあまり聞かない気がします.
個人的に作業効率がダンチなのでぜひ導入してみて欲しいです!

補足

unityroomへの自動更新は行えなかった

unityroomが流石に自動デプロイをサポートしていなかった
もしかしたらpythonのplaywrightを使えば無理やりできんのかな...?とか思いましたが,時間かかるし難易度高いしunityroomのUIの変更でぶっ壊れるのでやめました

ローカルで単純に実行しようとしても動かない

実はダウンロードしたファイルをクリックして実行しようとしても動かないです(unityroomだと動く)
ローカルで動かしたいならサーバー建てないとダメみたい

参考はこの辺

.ulfファイルを使わずにビルドする方法もあるみたい

buildalonというOSSではメアドとパスワードだけで認証できる

うまいことビルドできなかったので今回は使わなかった

参考

3
0
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?