
【CI/CD】BitriseでDeployGateなFlutterのAndroidとiOSをやってみる
2020.08.13
目次
第3弾~はじめに~

(株)ライトコードの笹川(ささがわ)です!
CIシリーズ第3弾です!
引き続きBitriseの使い方を紹介いたします。
ちなみに、今回がBitriseシリーズ最後です!
今回は、クロスプラットフォームのFlutterでAndroidとiOSそれぞれをDeployGateにデプロイしてみます。
前回の記事 :【CI/CD】BitriseでDeployGateなiOSをFastlane matchでやってみる
前々回の記事:【CI/CD】BitriseでDeployGateをAndroidでやってみる
こちらの記事もオススメ!
早速設定を始めてみましょう
Flutterのビルド環境はこちら
1 2 3 4 5 6 7 8 | $ flutter doctor Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel stable, v1.5.4-hotfix.2, on Mac OS X 10.14.5 18F132, locale ja-JP) [✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3) [✓] iOS toolchain - develop for iOS devices (Xcode 10.2.1) [✓] Android Studio (version 3.4) [✓] IntelliJ IDEA Community Edition (version 2018.3.2) [✓] Connected device (2 available) |
Androidのビルド環境はこちら
- compileSdkVersion 28
- buildToolsVersion '28.0.3'
- minSdkVersion 21
- targetSdkVersion 28
- keystoreはそれぞれリポジトリに含む
iOSのビルド環境はこちら
- 証明書の設定はManual
- CLIは不使用
- ConfigrationはDebug,Releaseの2種類
- AdhocはReleaseで設定
- 証明書はDevelopment,Adhoc,Appstoreの3種類
- Xcodeは10.2.1
設定してみる
今回は、公式ドキュメントを参考に進めていきます。
【公式ドキュメント】
https://devcenter.bitrise.io/getting-started/getting-started-with-flutter-apps/
しかし、毎度のごとくうまくいきません。
署名エラーを対応する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | +------------------------------------------------------------------------------+ | (5) flutter-build@0.9.2 | +------------------------------------------------------------------------------+ | id: flutter-build | | version: 0.9.2 | | collection: https://github.com/bitrise-io/bitrise-steplib.git | | toolkit: go | | time: 2019-06-01T05:05:11Z | +------------------------------------------------------------------------------+ | | Config: - IOSAdditionalParams: --degug - AndroidAdditionalParams: --degug --target-platform=android-arm64 - Platform: both - IOSExportPattern: *build/ios/iphoneos/*.app - AndroidExportPattern: *build/app/outputs/apk/*/*.apk - IOSCodesignIdentity: - ProjectLocation: /Users/vagrant/git iOS Codesign settings Installed codesign identities: - No codesign identities installed | | +---+---------------------------------------------------------------+----------+ | x | flutter-build@0.9.2 (exit code: 1) | 4.19 sec | +---+---------------------------------------------------------------+----------+ | Issue tracker: ...thub.com/bitrise-steplib/bitrise-step-flutter-build/issues | | Source: https://github.com/bitrise-steplib/bitrise-step-flutter-build | +---+---------------------------------------------------------------+----------+ |
これは、iOSのエラーですね。
前回の記事でも、署名エラーでp12ファイルをアップロードして解決したので同じように対応します。
プロビジョニングプロファイルのエラーを対応する
これは、完全に笹川のミスなのですが、matchなどプロビジョニングプロファイルの署名周りの設定を入れていませんでした。
こちらは、p12ファイルと同様にそれぞれプロビジョニングプロファイルをアップロードします。
Workflow Editor → Code Signing → PROVISIONING PROFILE
これで、署名/証明書関連のアップロードは終わりになります。
忘れずに Workflow に Certificate and profile installer を追加しておいてください。
iOSのDeployGateアップロード失敗に対応する
こちらを DeployGate にアップロードする際に、パス指定を $BITRISE_APP_DIR_PATH としましたがアップロードに失敗しました
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | +------------------------------------------------------------------------------+ | (7) deploygate--upload-app-bitrise-step@1.0.1 | +------------------------------------------------------------------------------+ | id: deploygate--upload-app-bitrise-step | | version: 1.0.1 | | collection: https://github.com/bitrise-io/bitrise-steplib.git | | toolkit: bash | | time: 2019-06-07T07:52:34Z | +------------------------------------------------------------------------------+ | | INFO[07:52:34] * [OK] Step dependency (curl) installed, available. + upload_app + set +ex curl: (26) couldn't open file "/Users/vagrant/git/build/ios/iphoneos/Runner.app" + return 0 + envman add --key DEPLOYGATE_UPLOAD_APP_STEP_RESULT_JSON ++ cat output.json ++ parse_error_field ++ cat - ++ ruby -rjson -ne 'puts JSON.parse($_)["error"]' + [[ '' == \f\a\l\s\e ]] + cat output.json + exit 1 | | +---+---------------------------------------------------------------+----------+ | x | deploygate--upload-app-bitrise-step@1.0.1 (exit code: 1) | 3.14 sec | +---+---------------------------------------------------------------+----------+ | Issue tracker: https://github.com/DeployGate/upload-app-bitrise-step/issues | | Source: https://github.com/DeployGate/upload-app-bitrise-step | |
デフォルトでFlutterビルドで生成されるのは、.appファイルです。
.ipaファイルを生成するコマンドはないようです。
そのため、こちらの記事を参考にScriptを設定します。
Flutter アプリを Bitrise で DeployGate に自動アップロード
これで、.ipaファイルが生成されるようになりました。
DeployGateアップロードのファイルパスを、 $FLUTTER_IPA_PATH へ忘れずに設定してください。
Artifactsにipaファイルが保存されないのを対応する
DeployGateへのアップロード対応でipaを出力するようにしましたが、このままだとArtifactsとして保存されませんのでその対応をします。
こちらは、先程の手順で追加したScriptに1行追加するだけです。
1 | cp ${BITRISE_SOURCE_DIR}/build/ios/iphoneos/Runner.ipa $BITRISE_DEPLOY_DIR |
これで、Bitriseを利用したFlutterのDeployGateでのデプロイが完了となります。
Androidの64bitビルドを対応する
昨今、話題になっているAndroidの64bit対応ですが、Flutterでは通常のビルドでは64bit対応されません。
Workflow の Flutter Build の Android Platform Configs で、 Addtional parameters にパラメーターを追加します。
1 | --target-platform=android-arm64 |
これで64bit対応がされた.apkファイルが出力されます。
さいごに
オススメ本
こちらの記事もオススメ!
関連記事
最終的に出来上がったymlファイル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | --- format_version: '7' default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git project_type: flutter trigger_map: - push_branch: develop workflow: debug-deploy - pull_request_source_branch: "*" workflow: debug-deploy workflows: debug-deploy: steps: - activate-ssh-key@4.0.3: run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' - git-clone@4.0.14: {} - cache-pull@2.0.1: {} - certificate-and-profile-installer@1.10.1: {} - flutter-build@0.9.2: inputs: - android_additional_params: "--debug --target-platform=android-arm64" - ios_additional_params: "--debug" - script@1.1.5: inputs: - content: |- #!/usr/bin/env bash cd build/ios/iphoneos mkdir -p Payload mv Runner.app Payload/ zip -ry Runner.ipa Payload envman add --key FLUTTER_IPA_PATH --value "${BITRISE_SOURCE_DIR}/build/ios/iphoneos/Runner.ipa" cp ${BITRISE_SOURCE_DIR}/build/ios/iphoneos/Runner.ipa $BITRISE_DEPLOY_DIR - deploygate--upload-app-bitrise-step@1.0.1: inputs: - api_key: "$DEPLOYGATE_API_KEY" - owner_name: "$DEPLOYGATE_NAME" - app_path: "$BITRISE_APK_PATH" - deploygate--upload-app-bitrise-step@1.0.1: inputs: - api_key: "$DEPLOYGATE_API_KEY" - owner_name: "$DEPLOYGATE_NAME" - app_path: "$FLUTTER_IPA_PATH" - deploy-to-bitrise-io: {} - cache-push@2.2.0: {} app: envs: - opts: is_expand: false BITRISE_FLUTTER_PROJECT_LOCATION: "." - opts: is_expand: false BITRISE_PROJECT_PATH: ios/Runner.xcworkspace - opts: is_expand: false BITRISE_SCHEME: Runner - opts: is_expand: false BITRISE_EXPORT_METHOD: development - opts: is_expand: false DEPLOYGATE_NAME: "{user name}" - opts: is_expand: false |
ライトコードよりお知らせ






一緒に働いてくれる仲間を募集しております!
ライトコードでは、仲間を募集しております!
当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。
また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!
なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。
ライトコードでは一緒に働いていただける方を募集しております!
採用情報はこちら書いた人はこんな人

- 新潟生まれ新潟育ち本業はモバイルアプリエンジニア。
日々、猫(犬)エンジニアとして活躍中!
IT技術2020.03.24Androidのライブラリを作って公開してみた
IT技術2019.12.18【最終回】Go言語(Golang)入門~Twitterアプリ作成完了編~
IT技術2019.12.12【第14回】Go言語(Golang)入門~Twitterアプリ作成編~
IT技術2019.12.04【第13回】Go言語(Golang)入門~MySQL利用編~