アプリエンジニアの山下です。
プロダクト自体の改善はもちろんですが、開発環境を改善していくこともエンジニアの重要な仕事だと思います。
今回はUnityプロジェクトをビルドしストア提出用アプリ(ipa/apk)を作る上で
起こった問題とその解消方法についてまとめてみました。
ビルド作成時の問題
開発を進めていく上で、現行プロジェクトをビルドしてQAや開発に関わっているメンバーに配布することは多々あります。
しかし開発が進むにつれプロジェクトが膨らんでいき、ビルド手順の複雑化とビルド時間の増大が問題になってきました。
特に手順の複雑化は属人性を高め、ビルド職人がいないとビルドを作れない事態にまで及びました。
一時期ビルド手順書が作られましたが、日々の開発による手順の変化に対応できず、属人化を避けることはできませんでした。
Jenkins の導入
まず属人化解消のため、Jenkinsによる自動ビルド環境を構築しました。
特筆する点としては、作成されるapk/ipaの用途に応じて、デバッグモード有効・無効、サーバの向き先などを予め指定したジョブを複数用意しています。
一例を挙げると以下の通りです。
- Beta-Build (デバッグ機能有効・開発サーバ)
- RC-Build (デバッグ機能無効・ステージングサーバ)
- Release-Build (ストア提出用・本番サーバ)
これにより、最低限のパラメータを設定すれば、後はビルド実行をポチるだけという状態にまで落とし込みました。
またジョブは行程ごとに細分化されており、ジョブ間の連携はパラメータと成果物の受け渡しで行っています。
パラメータの受け渡しはParameterized Trigger Pluginを使用しています。
Parameterized Trigger Plugin
https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin
同じ工程は一つのジョブに集約できるため、メンテナンス性を向上しています。
これで属人化は大きく解消できたと思います。