1. HOME
  2. ブログ
  3. IT技術
  4. 【CI/CD】BitriseでDeployGateなiOSをFastlane matchでやってみる

【CI/CD】BitriseでDeployGateなiOSをFastlane matchでやってみる

第2弾~はじめに~

秋山笹川先生

(株)ライトコードの笹川(ささがわ)です!

CIシリーズ第2弾です!

引き続き、Bitriseの使い方を紹介します。

前回の記事の宣言通り、今回は「iOS」です。

iOSは、1ビルドあたり10分以内であれば、無料で利用できるのは魅力的ですね!

前回の記事:【CI/CD】BitriseでDeployGateをAndroidでやってみる

早速設定を始めてみましょう

iOSビルドの環境はこちら

  1. CLIは、fastlane
  2. 証明書の設定は、Manual
  3. ビルド時にfastlane matchを利用
  4. Configrationは、「Debug」「Stage」「Release」の3種類
  5. 証明書もそれぞれ「Development」「Adhoc」「Appstore」となります。
  6. Xcodeは、10.2.1

設定してみる

今回は、Fastlane matchを利用したSigningを利用しますので、公式ドキュメント通りには進めません。

とりあえず、fastlaneworkflowsに設定し、実行したいlaneを設定します。

お察しの通りエラーが発生いたします…

Fastlane match を利用したドキュメントについては、記載が…ない!

公式ドキュメントには下記のように書いてあります。

サードパーティツールをcode signingの管理に利用する場合、そのツールのドキュメントやissueトラッカーを利用してください。

Bitriseでは、こちらで用意したStep(Certificate and profile installer)やtools (codesigndoc)についてのカスタマーサポートは可能ですが、サードパーティツールについてのカスタマーサポートは行なっておりません。

Fastlane matchのエラーを解消する

ここからは、他のCIサービスなども含めて使い方を調査し試行錯誤することにしました。

Fastlane matchを利用する際のパスワードの設定が漏れていました。

こちらは Workflow EditerEnv VarsMATCH_PASSWORD に対して matchを利用する際のパスワードを設定しておきます。

fastfileMatchfileなどへの記載は不要です。

設定して、Rebuildします。

match(sync_code_signing)の設定は、これで問題なしです。

gymでのエラーを解消する

matchが成功したあとは、また別のエラーが発生しました。

こちらのビルドですが、Developmentの証明書を利用したビルドをする予定で Configration も Debug となっております。

エラー文を見るとDevelopmentの証明書じゃなくて、Adhocの証明書を利用してビルドをしようと失敗しているようです。

指定した証明書を利用するようにlaneの内容を書き換えます。
(変数は、適宜置き換えてください。)

laneの内容を書き換え

設定してRebuildします。

これで、gymの設定は問題ないです。

Certificateのエラーを解消する

上記のgymの設定が完了したあとに別のエラーが発生しました。

どうやら、Certificateの署名そのものでエラーが発生しているようです。

certificate-and-profile-installerWorkflows に追加します。

Code Signing タブ」をタップし、「Developer用のCertificate」から「exportしたp12ファイル」をアップロードします。

パスワードは、exportしたときに設定したものを入力してください。

設定してRebuildします。

cocoapodsのエラーを解消する

自動でcocoapodsのバージョンがアップグレードされていました。

そのため、Gemfileでcocoapodsのバージョンを指定するようにしたら、fastlaneでcocoapodsコマンドが失敗するようになってしまいました。

Scriptを追加

こちらに関しては、下記のScriptを追加し対応しました。

これで、cocoapodsのバージョン指定をしてもエラーが発生しなくなりました。

DeployGateにアップロードする

これでアプリケーションファイル出力のビルドは、問題なく実行できるようになりました。

次に、出力したappファイルをDeployGateで配信できるようにします。

こちらは、Bitriseのworkflowを利用せずにfastlaneで対応します。

laneでの書き方はこちら

gymコマンドのあとに、こちらを呼び出せばアップロードが行われます。

Deploy to Bitrise.ioで保存されるようにする

DeployGate には、アップロードできるようになりましたが、appファイルとdYSMファイルを別途保管していることが多いのでこちらも設定します。

fastlane で出力先を指定せずにgymを実行すると、プロジェクトルートにファイルが出力されます。

ですから、Artifacts として保存しておきたい場合は、以下のどちらかになります。

  1. fastlaneで出力したファイルを移動する
  2. Artifactsとして参照するパスを変更する

Bitriseの仕様としての正解はわかりませんが、Workflow側で細かい設定をすると後に影響しそうでしたので前者で対応することにしました。

Scriptを追加

具体的な方法としては、Workflowのfastlaneの次にScriptを追加します。

デフォルトのDeployディレクトリに対してcpコマンドでファイルをコピーしています。

これで無事、Aritfactsにもファイルが保存されるようになりました。

さいごに

Androidの設定をした記事でも述べたように、BitriseではGUIでCI設定ができるのは利点の一つです。

今回のようにfastlane matchを利用した場合に、「どんなエラーが出て」「どんな対応をするか」は探しても見つかりませんでした。

iOSの証明書管理によく利用される fastlane match ですが、実際に採用している人も多いのではないでしょうか。

この記事が誰かの役に立ってくれたら幸いです!

オススメ本

iOSアプリ開発自動テストの教科書 〜XCTestによる単体テスト・UIテストから,CI/CD,デバッグ技術まで
iOSアプリ開発自動テストの教科書 〜XCTestによる単体テスト・UIテストから,CI/CD,デバッグ技術まで

 

こちらの記事もオススメ!

関連記事

最終的に出来上がったymlファイル

 

書いた人はこんな人

笹川(エンジニア)
新潟生まれ新潟育ち本業はモバイルアプリエンジニア。
日々、猫(犬)エンジニアとして活躍中!

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界を変える…! /

Androidエンジニア

\ みんなが使うアプリを創る /

iOSエンジニア