概要
無料の範囲でUnityプロジェクトをクラウドビルドしてテスター用に配布までしたい! との思いからやってみました。
結果、GitHubにプッシュすると自動ビルドしてアプリの配布までしてくれるようになったので解説していきます。
※アプリの配布はDeployGateを使っています。
環境
Windows 11 Home
Unity2022.3.16f1(Personalライセンス)
SourceTree
GitHub
DeployGate(Individualプラン、メンバー3人まで。リンクによる配布は100人まで)
UnityプロジェクトのGitHub管理
まずUnityプロジェクトをGitHubで管理できるようにしておきます。
私はSourceTreeを使いましたが、各自やりやすい方法でやってください。
SourceTreeを使う場合は下記の記事が参考になります。
DeployGateのアカウント作成とAPIキーの確認
DeployGateのアカウントを作成します → https://deploygate.com/users/signup
アカウントを作ったら設定画面からAPI Keyを確認します。(後々使うので控えておいてください)
アカウント設定 > プロフィール > API Key
にあります。
ulfファイルの確認
下記の場所にulfファイルが存在するはずです。確認してみてください。(これも後々使います)
Windows: C:\ProgramData\Unity\Unity_lic.ulf
Mac: /Library/Application Support/Unity/Unity_lic.ulf
Linux: ~/.local/share/unity3d/Unity/Unity_lic.ulf
シークレット設定
GitHubリポジトリのSettings > Secrets and variables > Actions
に移動します。
New repository secret
ボタンをクリックしてシークレットを追加します。
NameにDEPLOYGATE_API_KEY
と入力し、Secretに先ほど確認したDeployGateのAPIキーを登録します。
同じように以下のシークレットも追加していってください。
-
DEPLOYGATE_USER_NAME
: DeployGateのユーザー名 -
UNITY_EMAIL
: Unityアカウントのメールアドレス -
UNITY_PASSWORD
: Unityアカウントのパスワード -
UNITY_LICENSE
: 先ほど確認したulfファイルの内容をコピペ
パーソナルアクセストークンの作成
GitHubページ右上のプロフィールアイコンをクリックしてSettings
を選択します。
左側のメニューからDeveloper settings
を選択し、その後Personal access tokens > Tokens (classic)
を選択します。
「Generate new token」をクリックします。
トークンに名前を付け、スコープはrepo
とworkflow
を選択します
トークンを生成し、安全な場所に保存します。このトークンは一度しか表示されないので注意してください。
GitHubリモートURLの更新
作成したパーソナルアクセストークンを使ってリモートURLを更新します。
SourceTreeを使っている場合
SourceTreeを開き、対象のリポジトリを選択します。
上部のメニューから設定
を選択します。
「リモート」タブのパスを選択して編集
をクリックします。
リモートURLを次の形式に更新します
https://ghp_yourgeneratedtoken@github.com/yourusername/yourrepository.git
SourceTreeを使っていない場合
ターミナルまたはコマンドプロンプトを開き、リポジトリのディレクトリに移動します。
次のコマンドを実行して、GitHubリモートURLを更新します。
git remote set-url origin https://ghp_yourgeneratedtoken@github.com/yourusername/yourrepository.git
ymlの作成
Unityプロジェクトをビルドし、DeployGateにアップロードするためのワークフローを記述します。
リポジトリのルートに.github/workflows
フォルダを作成し、フォルダ内にbuild.yml
ファイルを作成してください。
この例ではAndroid用にビルドしています。
name: Build and Deploy to DeployGate
on:
push:
branches:
- main # このブランチにプッシュされるとJobが実行される
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Remove unnecessary files
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /usr/local/lib/android
sudo rm -rf /opt/ghc
- name: Cache Library folder
uses: actions/cache@v3
with:
path: Library
key: Library-$(hashFiles('**/Packages/manifest.json'))
restore-keys: |
Library-
- name: Build for Android
uses: game-ci/unity-builder@v4
env:
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
with:
projectPath: .
targetPlatform: Android
buildName: build
buildsPath: build
- 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
※ on
セクションのブランチ名をmain
からdeploy
などに変えると、deployブランチにプッシュされたときのみビルド、配信がされるようにできます。用途に合わせて変更してください。
プッシュする
変更をGitHubリポジトリにプッシュします。
GitHub Actionsが自動でビルドおよびDeployGateへの配信を行うか確認します。
DeployGateでアプリがアップロードされていたら成功です。できていなかったらGitHubリポジトリのActionsタブでエラーが出ていないか確認してみてください。
最後に
無料とは言いましたが、GitHub Actionsには使用枠の制限があります。
無料枠ではGitHub ActionsでJobを実行できる時間が月2000時間になっており、それを超えるとJobを実行できなくなります。勝手に課金されることはないみたいなのでそこは安心ですね。
現在の使用時間はアカウントのSetting > Billing and plans
のActions
から確認できます。
参考にしたサイト