ラクスR&D Meetup - Flutter での登壇資料です。 https://rakus.connpass.com/event/220540/
FlutterアプリのiOSビルドとアーカイブをCircleCI で自動化してみた岡部恭平 / CO-OP Sapporo2021.9.8 / ラクスR&D Meetup - Flutter
View Slide
自己紹介生活協同組合コープさっぽろデジタル推進本部 システム部AWS・エンジニアリングチーム エンジニア岡部恭平 @okabeeeatWebアプリケーションエンジニア
コープさっぽろDX引用: https://dx.sapporo.coop/
最近やっていること● 社内ツール開発○ Saasと社内システムの連携■ Node.js + TypeScript■ AWSによるサーバレスな構成● Developer eXperience の推進○ CI/CDの構築、開発フローの整備、bot開発など
目次● 背景● 目的● 方法● 構成● まとめ
背景・・・引用: https://dx.sapporo.coop/n/n23376af197fa
Flutter のプロジェクトが始まったっぽい
そんな中ビルドが辛いので自動化したい!Aさんはビルドできるのに私はできませんエンジニアなるほどね私
目的CI/CD環境を構築し、ビルドの自動化と属人化の解消を実現する
作業スタート時 まぁアレだろ! Ruby on Rails や Vue CLI アプリのCI/CD環境と似た感じなものを作れば良いんでしょ!主な経験言語Ruby, JavaScript, PHP
数時間後... 証明書って何?Apple Developer?Bitrise? Codemagic?CircleCIじゃダメなの?iOSビルドとアーカイブって何が違うの?そもそも Dart 触ったこと無かったわ
内容を整理する● iOSアプリのビルド及び配布をするためには以下の工程が必要○ Apple Developer アカウントの作成○ ビルド○ 証明書の作成・設定○ アーカイブ○ 配布● Flutterアプリ開発でよく使われてそうなCI/CDサービス○ Bitrise○ Codemagic○ GitHub Actions○ Cirrus CI(Dockerイメージでよく見かける)● CircleCI でもCI/CD環境を構築する方法はある(最近有料化したばっかりでして...)
そこからさらに調査...
方法良さそうな方法が2つに絞られた①CircleCI + fastlane②CircleCI + Apple Store Connect API + Codemagic CLI tools
①CircleCI + fastlane● 公式で紹介されている方法● Apple Developerのアカウントが必要● 証明書無しでiOSビルド → fastlane で証明書の生成・取得・設定し、アーカイブを実行● 証明書を管理するためのリポジトリが必要○ え?証明書のためだけにリポジトリが必要なの!?fastlane とは?● iOS/Android のビルドやリリース作業を自動するツール
公式: https://flutter.dev/docs/deployment/ios#create-a-build-archive-with-codemagic-cli-tools②CircleCI + Apple Store Connect API + Codemagic CLI tools● 公式に書いてある方法を CircleCI で実行する方法● Codemagic CLI tools + Apple Store Connect API で 証明書の取得・設定をする○ Codemagic CLI tools 自体は無料で使える● 「flutter build ipa」でアーカイブまで一気に実行● 証明書を管理するためのリポジトリが不要になりそう
どっちにしたの?①CircleCI + fastlane②CircleCI + Apple Store Connect API + Codemagic CLI tools
本当は②にしたかった... ● ローカル環境(macOS)では成功● CircleCI のコンテナデバッグで検証○ macOS(xcode: 12.5.1)で失敗● 惜しいところまでいったが時間切れに○ あと少し時間があったら..(言い訳)検証用に仮で置いている (現在は削除済み)
気を取り直して①で進める
構成① 証明書管理リポジトリ
構成② iOSビルド構成
サンプルコード等後日ブログ等にまとめます
結果無事自動化できた🎉
結果● ビルドが自動化された○ 本来の開発に集中できる● 属人化が解消された○ 誰かによる手動のビルド作業が無くなった○ 開発者は Flutter のコードを push するだけで良い○ Apple Developer への登録も不要
今後やること● iOSアプリの配信の自動化● Androidアプリのビルド・配信の自動化
まとめ● iOSアプリのビルドとアーカイブを CircleCI で自動化した● CI/CD環境の実現方法は CircleCI + fastlane を採用した● FlutterというよりiOSアプリを配信するまでの作業をキャッチアップできた
参考● Continuous delivery with Flutter○ https://flutter.dev/docs/deployment/cd#integrating-fastlane-with-existing-workflows● Build and release an iOS app○ https://flutter.dev/docs/deployment/ios#create-a-build-archive-with-codemagic-cli-tools● `flutter build ipa` でiOS向けのビルドとアーカイブを同時に実行○ https://medium.com/flutter-jp/ipa-e176de0276c6● CircleCI 2.1 と fastlane で Flutter の iOS と Android をビルドして DeployGate で配布する○ https://qiita.com/masashi-sutou/items/08c4d4eb5b9cb2dcd47a● fastlane match を使用して iOS の証明書管理を行う○ https://qiita.com/kotarella1110/items/840af2cf80aaea1fb035● fastlaneでCode Signing StyleをAutomaticからManualに変更する○ https://tech.studyplus.co.jp/entry/2018/05/28/115637
ご清聴ありがとうございました