初めに
以下の記事でGitHub ActionsでAndroidの自動ビルドのワークフローおよびFirebase App Distributionにバイナリーをアップロードするワークフローを作成しました。
今回は、ここにWebビルドをFirebase HostingにデプロイしてWebプラットフォームでも確認をできるようにしてみます
Repositoryは以下に公開しています
開発環境
- Unity 6000.0.43f1
環境変数の設定
前回同様 Unityのメールアドレス・パスワード・licenseは登録されているものとします。
また Webのデプロイ用に FIREBASE_PROJECT_ID を追加します。firebaseの設定画面から プロジェクト ID をコピーします。

次に以下のように GitHubのシークレットキーに登録します

ワークフローの作成
プロジェクトは前回のものをそのまま使います (空プロジェクトなので、新規で作成しても問題ないです)
以下はWebビルドおよびデプロイのみのワークフローの内容です
name: Unity Build and Deploy on: push: branches: [ main ] pull_request: branches: [ main ] workflow_dispatch: env: UNITY_VERSION: '6000.0.43f1' FIREBASE_PROJECT_ID: ${{ secrets.FIREBASE_PROJECT_ID }} jobs: build-webgl: name: Build and Deploy WebGL runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4.2.2 # ディスク容量の確保 - name: Free disk space run: | sudo swapoff -a && sudo rm -f /swapfile sudo rm -rf /usr/share/dotnet sudo rm -rf /opt/ghc /usr/local/.ghcup sudo apt-get remove -y google-cloud-cli || sudo apt-get remove -y google-cloud-sdk sudo apt-get autoremove -y && sudo apt-get clean docker system prune -af df -h - name: Clean up Docker space run: docker system prune --volumes -a -f - name: Cache Unity Library - WebGL uses: actions/cache@v4.2.0 with: path: Library key: Library-WebGL-${{ hashFiles('Assets/**', 'Packages/**', 'ProjectSettings/**') }} restore-keys: | Library-WebGL- - name: Build WebGL App uses: game-ci/unity-builder@v4.3.0 env: UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} with: targetPlatform: WebGL buildsPath: build buildName: WebGL unityVersion: ${{ env.UNITY_VERSION }} - name: Upload WebGL Build Artifact uses: actions/upload-artifact@v4.6.0 with: name: Build-WebGL path: build/WebGL retention-days: 14 # ブランチ名からチャンネルIDを生成(PRでない場合のみ) - name: Generate Channel ID if: github.event_name != 'pull_request' id: channel run: | BRANCH_NAME="${GITHUB_REF#refs/heads/}" CHANNEL_ID=$(echo "$BRANCH_NAME" | tr '[:upper:]' '[:lower:]' | sed -e 's/[_\/]\+/-/g' -e 's/^-*//' -e 's/-*$//' -e 's/--*/-/g') CHANNEL_ID=$(echo "$CHANNEL_ID" | tr -cd 'a-z0-9-' | cut -c 1-36) if [[ "$BRANCH_NAME" == "main" ]]; then CHANNEL_ID="live" fi if [[ -z "$CHANNEL_ID" || "$CHANNEL_ID" == "-" ]]; then CHANNEL_ID="preview-${GITHUB_SHA::7}" fi echo "Generated Channel ID: $CHANNEL_ID" echo "CHANNEL_ID=$CHANNEL_ID" >> $GITHUB_ENV # Firebase CLI を使って Hosting にデプロイ(PRでない場合のみ) - name: Deploy to Firebase Hosting using CLI if: github.event_name != 'pull_request' run: | # Firebase CLI インストール if ! command -v firebase &> /dev/null; then echo "Firebase CLI not found, installing..." if ! command -v curl &> /dev/null; then sudo apt-get update && sudo apt-get install -y curl; fi curl -sL https://firebase.tools | bash fi firebase --version # サービスアカウントキー処理 echo "${{ secrets.GCP_SA_KEY }}" | base64 --decode > service_account_webgl.json JSON_SIZE=$(stat -c %s service_account_webgl.json) echo "WebGL Service Account JSON size: $JSON_SIZE bytes" if [ "$JSON_SIZE" -lt 100 ]; then echo "Error: Failed to create valid WebGL service account file." cat service_account_webgl.json exit 1 fi export GOOGLE_APPLICATION_CREDENTIALS="$(pwd)/service_account_webgl.json" # --- デプロイコマンド --- FIREBASE_PROJECT="${{ env.FIREBASE_PROJECT_ID }}" if [ -z "$FIREBASE_PROJECT" ]; then echo "Error: FIREBASE_PROJECT_ID env var is not set." exit 1 fi DEPLOY_CHANNEL="${{ env.CHANNEL_ID }}" # ★ 公開するディレクトリ(ビルド成果物の場所) DEPLOY_CHANNEL="${{ env.CHANNEL_ID }}" # ↓↓↓ ★★★ 公開ディレクトリのパスを修正 ★★★ ↓↓↓ PUBLIC_DIR="build/WebGL/WebGL" echo "Creating temporary firebase.json with headers..." echo '{ "hosting": { "public": "'"$PUBLIC_DIR"'", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ] } }' > firebase.json echo "Generated firebase.json:" cat firebase.json echo "Deploying to project '$FIREBASE_PROJECT' on channel '$DEPLOY_CHANNEL'" # チャンネルに応じたデプロイコマンド (変更なし) if [[ "$DEPLOY_CHANNEL" == "live" ]]; then echo "Deploying to production (live) channel..." firebase deploy \ --project "$FIREBASE_PROJECT" \ --only hosting \ --message "Deploy build ${{ github.run_number }} from commit ${{ github.sha }} (branch: ${GITHUB_REF_NAME})" \ --force \ --debug else echo "Deploying to preview channel: $DEPLOY_CHANNEL" firebase hosting:channel:deploy "$DEPLOY_CHANNEL" \ --project "$FIREBASE_PROJECT" \ --only hosting \ --expires 7d \ --debug fi echo "Firebase deployment command executed." env: FIREBASE_CLI_PREVIEWS: hostingchannels CI: true
Unityのビルド設定
Firebase HostingでWebビルドを動かすためには、圧縮設定を Disable にする必要があります。

Firebase側の画面の確認
Firebase側でURLや使用状況が以下のように確認することができます

また 使用しているストレージやダウンロード量なども確認することができます。

