DeployGate公式Actionを使ってUnity AndroidビルドをGitHub Actionsで自動デプロイ

初めに

先日、GitHub Actionsを使ってUnityプロジェクトをビルドし、Firebase (Android/WebGL) へ自動デプロイするワークフローを紹介しました。

ayousanz.hatenadiary.jp ayousanz.hatenadiary.jp

今回はその続きとして、ビルドしたAndroidアプリ (.apk) を DeployGate に自動でアップロードするワークフローについて解説します。

以前は curl コマンドを使ってアップロードしていましたが、最近 DeployGate公式のGitHub Action がリリースされたため、今回はそちらを利用してワークフローをよりシンプルに改善してみました。

(公式のXよりリリースについて教えていただきました)

以下が公式のActionsです。

github.com

今回作成したリポジトリはこちらです。

github.com

開発環境

  • Unity 6000.0.43f1
  • GitHub Actions (ubuntu-latest runner)
  • DeployGate

DeployGateの設定

まず、DeployGateのアカウントが必要です。アカウント作成後、「アカウント設定」メニューからAPIキーを発行します。

次に、発行したAPIキーとDeployGateのユーザー名を、GitHubリポジトリの Secrets に登録します。

  • DEPLOYGATE_API_KEY: 発行したAPIキー
  • DEPLOYGATE_USER_NAME: あなたのDeployGateユーザー名

ビルドワークフロー

UnityプロジェクトをGameCIを使ってGitHub Actions上でビルドする部分は、以前の記事と同様です。Android向けの .apk ファイルを生成します。 詳細な設定(Unityライセンスの設定など)は過去記事をご参照ください。

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:
  # Android向けビルドとデプロイジョブ
  build-android:
    name: Build and Deploy Android
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4.2.2

      - name: Cache Unity Library - Android
        uses: actions/cache@v4.2.0
        with:
          path: Library
          key: Library-Android-${{ hashFiles('Assets/**', 'Packages/**', 'ProjectSettings/**') }}
          restore-keys: |
            Library-Android-

      - name: Build Android 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: Android
          buildsPath: build
          buildName: MyAndroidApp
          androidExportType: androidPackage
          unityVersion: ${{ env.UNITY_VERSION }}

      - name: Upload Android Build Artifact
        uses: actions/upload-artifact@v4.6.0
        with:
          name: Build-Android
          path: build/Android/MyAndroidApp.apk

DeployGateへのアップロード処理

ビルドが完了した .apk ファイルをDeployGateにアップロードします。

以前の方法 (curl を使用) 以前は、以下のように curl コマンドを使ってDeployGate APIを直接叩いていました。

      - name: Upload to DeployGate
        env:
          DEPLOYGATE_API_KEY: ${{ secrets.DEPLOYGATE_API_KEY }}
          DEPLOYGATE_USER_NAME: ${{ secrets.DEPLOYGATE_USER_NAME }}
        run: |
          APK_PATH=$(find build -name "*.apk" | head -n 1)
          echo "Uploading $APK_PATH to DeployGate"
          curl -F "file=@$APK_PATH" \
               -F "token=$DEPLOYGATE_API_KEY" \
               -F "message=New build from GitHub Actions" \
               https://deploygate.com/api/users/$DEPLOYGATE_USER_NAME/apps

DeployGate公式Actionを使用する方法

今回、新しくリリースされた DeployGate公式のDeployGate Upload GitHub Action を使って、この部分を書き換えます。

このActionを使うことで、curl スクリプトが不要になり、ワークフローのYAMLがよりシンプルで見通しが良くなります。

      - name: Upload to DeployGate using Action
        uses: DeployGate/deploygate-upload-github-action@v1.0.0
        with:
          api_token: ${{ secrets.DEPLOYGATE_API_KEY }}
          owner_name: ${{ secrets.DEPLOYGATE_USER_NAME }}
          file_path: build/Android/MyAndroidApp.apk
          message: "New build from GitHub Actions (using action)"

アップロードされると以下のようになります

まとめ

DeployGate公式のGitHub Action DeployGate/deploygate-upload-github-action を利用することで、Unityプロジェクトのビルド成果物をDeployGateへアップロードする処理を、より簡単かつ宣言的に記述できるようになりました。

curl を使ったスクリプト管理の手間が省け、ワークフローの見通しも良くなるため、これからGitHub ActionsでDeployGate連携を行う場合は、公式Actionの利用をおすすめします。