みなさん、こんにちは。
入社3年目のプリンシパルのしもじです。
4月にプリンシパルという職位になりました。私自身、意味はよくわかっていません。
さて、ecbeing はアプリ開発もやってます。
去年からアプリ開発を任されていて、機能追加したり構造化したりしてました。
構造化の話は機会があれば記事にしようと思います。
はじめに
Xcode でビルドして .ipa ファイルを作成、 DeployGate にアップロードし配布ページの更新までの手順が手間でした。
そこで 、 Azure Pipelines で iOS アプリを AdHoc ビルドして、DeployGate にアップロードするまでを自動化してみました。
準備
3つのファイルが必要になるので先に準備しておきます。
- 証明書(p12)
- provisioning profile
- export options plist
今回は Ad Hoc でビルドするので、証明書と provisioning profile は Ad Hoc 用を用意します。 export options plist は最低限の構成で作成します。
- method - Ad Hoc でビルドしたいので「ad-hoc」を指定します。
- teamID - 署名に使うチームIDを指定します。
- provisioningProfiles - 「Key」にバンドルID、「Value」に provioning profile のname を指定します。
他のオプションが気になる方は以下のコマンドを実行することで確認することができます。
xcodebuild -h
手順
プロジェクトの作成
Azure DevOps にログインして「Pipelines」 からプロジェクトを作成します。
Select a template で「Xcode」 を選択し、「Apply」をクリックします。
タスクの編集
証明書のインストールタスクの設定
プロジェクトが作成できたら、ビルドを実行するためのタスクを編集していきます。
まず「Install an Apple certificate」タスクを右クリックし有効化し、あらかじめ用意した証明書を下記画像の赤枠からアップロードします。
また、証明書のパスワードが必要なので「Variables」タブの「P12password」にパスワードを設定します。
provisioning profileのインストールタスクの設定
つづいて「Install an Apple provisioning profile」ジョブも有効化し、provisioning profile をアップロードします。
ビルドタスクの設定
次に「Xcode build」タスクを設定します。
「Signing style」を選択します。署名できればどれでもいいとは思いますが、こちらの環境では「Project Default」以外を設定するとうまくいかなかったので「Project Default」に設定しました。
ipaファイルを作成するために「Create app package」にチェックをいれます。
ipaファイルを作成するために export options plistを設定する必要があるため、「Export options」で 「Plist」 を選択し、「Export options plist」にあらかじめ用意した export options plist のパスを入力します。
「Copy Files to: $(build.artifactstagingdirectory)」タスクと「Publish Artifact: drop」タスクは今回は不要なタスクなので右クリックから無効化します。
DeployGateアップロードタスクの設定
最後にDeployGate にアップロードするためのタスクを作成します。
残念ながらDeployGate 専用のタスクはないので、Bashを使います。
「Agent job 1」の右側にある「+」をクリックしてタスクの一覧から Bash を選択します。
Bashタスクが追加できたら、「Type」で「Inline」を選択し、「Script」に以下のコードを張り付け、各パラメータを設定します。ipaファイルが作成されるディレクトリがわかりにくいので、一度ビルドして確認してみるといいと思います。
今回は配布ページの更新も行いたかったので distribution_key を指定しています。詳しくは DeployGate API のページを参照してください。
curl \ -F "token=xxx" \ -F "file=@sample.apk" \ -F "message=sample" \ -F "distribution_key=abcd1234" \ -F "release_note=new build" \ https://deploygate.com/api/users/_your_name_/apps
https://docs.deploygate.com/reference#deploygate-api
自動実行の設定
あとは「Trigger」タブの「Enable continuous integration」にチェックをいれて、git pushに反応してジョブが自動実行されるよう設定します。
さいごに
これで Azure Pipelines でアプリをビルドして、DeployGate にアップロードするまでを自動化できました。
これまでは Xcode 上のビルドで済ませていたので、 export options plist が必要なことを知らなかったりいろいろと躓きポイントがありました。しかし、変更があるたびビルド、アップロード、再配布をしていた手間が省けてかなりいい感じで自動化した甲斐がありました。
それではまた。
しもじ
~ecbeingではエンジニア仲間を募集中です!~