LoginSignup
3
1

IOSのbuild時のアップロード先とbranch運用・CICDを考えてみる

Last updated at Posted at 2023-08-04

背景

普段、flutterで開発をしていて、Iosのbuildをする時に
ProvisioningProfileとp12ファイルとcertificateとIdentifiers(バンドルID)が必要になるが、これに付け加えて、開発環境と、本番環境を区別してアプリをbuildしないといけない。用語が出てきてかなり初見だとかなりわかりづらいのでまとめる。

swift開発者にも通じる部分はあるのかなと思いましてあえて、flutterとtitleには入れていません。

Identifiers(バンドルID)・ProvisioningProfile・p12ファイル・certificateのロードマップ

空白の図(4).jpeg

アプリをbuildするとき、.ipaを得るときに鍵を作って、署名が必要になる。その鍵を作る過程で用語が出てくるのとかなり戸惑うので、一旦何を行わなければならないのかを記す。

buildで署名をするときに使うのは、ProvisioingProfile.p12を使う。
このProvisioningProfileを作るまでの過程は大きく3つしないといけないことがある。

空白の図(5).jpeg

  1. certificateと.p12ファイルを作る。(キーチェーンアクセスから作成する)
  2. バンドルIDを作る。
  3. 1.と2.を紐付けてProvisioingProfileを作る

これができたら、CI/CDを組みます。

ここまでは、単に1つのアプリを作るまでの基礎知識です。

開発環境と本番環境の区別した時に、ストア側のアプリはどのように分ければよいか?

おそらく要望が、いくつか出てくると思われる

[要望その1]:BackEndのAPIが本番環境と開発環境分かれてる

以下のようにそれぞれBackendのendpointが分かれてる可能性がある。

https://api.hoge.com # production環境
https://api.dev.hoge.com # development環境

[要望その2]: TestFlightで開発環境、本番環境ともに確認したい。

[要望その3]: CI/CDでbuildして本番環境、開発環境確認したい。

本番環境、開発環境それぞれで開発して確認したい。

これを満たすworkflow

空白の図(2).jpeg

ルール

  1. 実際のアプリを、開発環境と本番環境で分けておく。
    アプリレベルで分けておく

スクリーンショット 2023-08-04 22.15.19.png
2. bundleIDも、以下のように分けておくが、certificateは、同一のものを使用する。

com.company.appName #production環境用
com.company.appName.dev #development環境用

3.本番環境と開発環境のBackendのAPIドメインは分ける

https://api.hoge.com # production環境
https://api.dev.hoge.com # development環境

4.環境わけのロールは以下の通り

開発環境の内部テスト #development環境
本番環境の内部テスト #staging-development環境

↓経営陣や限定されたclientが見る↓
本番環境の外部テスト #staging-production環境
ストアに流す        #production環境
※xcrunをの-uと-pを設定するには、下記から作成できる。
xcrun altool --upload-app -t ios -f "build/ios/ipa/preview.ipa" -u "${{ secrets.APPLE_ID }}" -p "${{ secrets.APPLE_APP_PASS }}"

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1