GodotアプリのiOSビルドを自動化したい

GodotアプリのiOSビルドを自動化しようとしたら少し苦戦した。

今までどうやっていたか

  1. GodotのプロジェクトのレポジトリとiOSアプリ用のレポジトリを分けて作成。
  2. iOSプロジェクトはバージョンアップ時にBundle versionを変更したり、プラグインを追加する際にプロジェクトを作り直したりする。
  3. Godot側でコードの変更をしたらpckファイルを書き出してiOSアプリ用のレポジトリにPushする。
  4. iOSアプリ用のレポジトリはXcode cloudとリンクされており、PushをトリガーにビルドがApp Store / TestFlightにアップロードされる。

この仕組みでそこまで不便はなかったが、しばらく使っていて下記のような不便さを感じるようになってきた。

  1. pckファイルの書き出し→iOSアプリ用レポジトリへのPushが面倒。特にコミットメッセージを書くのが面倒。
  2. GodotのレポジトリのコードとiOSアプリ用レポジトリのコードに不一致が起こりうる。
  3. 他プラットフォーム用ビルドを考慮した場合に、より上の問題が顕著になる。

そこで、Godot側のコードが変更されたら自動的にpckファイルを生成してiOS用のレポジトリにPushできないかを考えた。

どうやったら実現できたか

  • Godot用のレポジトリにPushがあったらGitHub Actionsで、pckファイルの生成とiOSアプリ用のレポジトリへのPushをする。
  • firebelley/godot-exportプラグインを使って、pckファイルを生成する。
  • dmnemec/copy_file_to_another_repo_actionプラグインを使って、pckファイルをiOS用のレポジトリにPushする。

やることはシンプルにこれだけなのだが、はまるポイントがいくつかあって正常に動作できるようになるまで結構時間がかかった。

はまったポイント

pckファイルの書き出し

書き出しに失敗してもエラーにならない

  • firebelley/godot-exportでは、下記のバイナリが適切でないなどの事情でエクスポートがうまくいかなかった場合でも、Stepとしてエラーにならず一見成功しているように見えてしまうケースがあった。
  • その後のステップで成果物をうまく参照できない場合は、ログを参照してエクスポートでエラーが起きていないかをチェックする。

Godotの実行ファイルをどこからダウンロードすれば良いのかわからない。

    export_preset.cfgをコミットする

    • Godot用のgitignoreテンプレートでexport_preset.cfgがIgnoreされる設定になっていた。(最新のテンプレートではIgnoreから外されている様子)
    • firebelley/godot-exportでpckファイルを出力する際はexport_presetを指定する形になるので、ignoreから外してPushする必要があった。

    Pocket

    コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です