SHOWROOM iOS CI/CD周りのお話

こんにちは。SHOWROOM iOSエンジニアの郭(@huiping192)です。 今回はSHOWROOM iOS CI/CD 周りを紹介したいと思います。

CI/CD環境

Bitrise + fastlane + deploygate + Slack bot

Bitrise

Bitrise採用の理由はXcodeバージョン更新の速さです。
今回のiOS13対応もXcode 11 beta早いタイミングでBitriseが対応し、 おかげでiOS13向けての開発CI止めることなく開発できました。

fastlane

iOSチームでは万が一、CIサービスが使えない状況になったとしても、リリース業務に支障が出ないよう、fastlaneに集約しています。
また、他のCIサービス移行も楽にできちゃいます。

DeployGate

iOSチームは元々、TestFailryを使っていましたが、AndroidチームはDeployGateを利用しており、ツールが別れていました。 我々はツールをDeployGateに統一することにしました。

Bitrise Workflow運用

Workflow Trigger

Pull Request

  • Pull Request が作られた際、まずはCIを動かし、buildとテストを走らせます f:id:huiping:20191203200749p:plain:w600

Push

  • masterにmergeされた際、自動的にsubmitされます
  • release/* にpull reqeustがmergeされた際、自動的にInHouse buildを作り、slackでプロダクトテストチームへ連絡してくれます

f:id:huiping:20191203200813p:plain:w600

Workflow

Test(dev-fastlane)

Pull Request作ると自動的にこのworkflowを走らせ、buildとunit testを実行します。 ほかのworkflowと違うのは Dangerによる事前コードチェックgithubのPull Request状態の更新です。

f:id:huiping:20191204193648p:plain:h360

Danger

SHOWROOM iOSチームではほかのメンバーがreview入る前にDangerのswiftlintによるチェックが入って、 LGTMもらったらメンバーがcode reviewに入る感じになります。

通ったらこんな図です。笑
f:id:doggy_dog:20191205163408j:plain:w360

InHouse build (inhouse-fastlane)

iOSメンバーシップは年100端末しか登録されない+都度都度の端末登録も面倒なので、SHOWROOMではエンタープライズ版を使ってプロダクトテストチームに渡し、テストしてもらっています。

f:id:huiping:20191204183432p:plain:h360

DeployGate上げたらプロダクトチームに通知。

f:id:doggy_dog:20191205163411j:plain:w360

adHoc build (iap-fastlane)

大体の場合はInHouse buildでテストできますが、InHouse buildは課金のサンドボックステストできないため、adHoc buildを作ってプロダクトチームに課金周りをテストしてもらう場合があります。
ですが、inhouseのworkflowほぼ同じです。

f:id:huiping:20191204183454p:plain:h360

App Store submit (release-fastlane)

master branchがPull Requestされたら自動的にsubmitにフォローが入るようにしています。 submit成功後はslackに通知してくれます。
Bitrise側はfastlaneのscriptを呼ぶだけ、fastlane内部ではsubmit前チェック、本番build作成、metaデータ更新、tagきりなどを行っています。

f:id:huiping:20191204183116p:plain:w360

Slack Bot

プロダクトテストはほぼInHouseで検証していますが、エンタープライズbuildだと課金検証できないため、adHoc build作る必要があります。
Slack Bot作る前には毎回iOSエンジニアに頼んで作るしかなかったのですが、Slack Bot作ることで、エンジニアの作業が必要なくなりました。

f:id:doggy_dog:20191205163414j:plain:w360 f:id:doggy_dog:20191205163853j:plain:w360

最後

SHOWROOMでは絶賛iOSエンジニア募集中なので、CI/CD、自動化周り興味ある方も大歓迎です!
お待ちしております。

recruit.showroom.co.jp