LoginSignup
1
0

--dart-define-from-fileでXcode Cloud

Posted at

環境

  • M2 Mac mini
    • macOS 13.5
  • Xcode 15.0.1
  • Flutter 3.13.9

はじめに

--dart-define-from-fileでFirebase Test Labに続き、Xcode CloudでCI/CD環境を構築する時にも--dart-define-from-fileを適用するのに苦労したので、記事に残しておきたいと思います。
尚、--dart-define-from-file以外の部分についてはContinuous delivery with Flutterに従ってCI/CD環境が構築できているものとします。

定義ファイルの配置方法

--dart-define-from-fileを使用する場合、定義ファイルには通常秘匿情報が含まれるので、git管理対象外にしていると思います。そのため、Xcode Cloudで--dart-define-from-fileを使用する場合はワークフローの環境変数を使用します。

スクリーンショット 2023-12-30 11.57.44.png

シークレットにチェックをつけると、値がログに出力されることも抑制できるので秘匿したい情報はシークレットにしましょう。
これでci_post_clone.shから環境変数が参照できるようになるので、echoコマンド等を使用して定義ファイルを作成します。(Firebaseを使用している場合は同様にGoogleService-Info.plistも作成してください。)

echo "{
  \"flavor\": \"$flavor\",
  \"appIdSuffix\": \"$appIdSuffix\",
  \"appName\": \"$appName\",
  ...
}" > dart_defines.json

依存性の注入方法

定義ファイルを配置しただけでは環境変数が取り込まれないので、下記のコマンドを実行してios/Flutter/flutter_export_environment.shios/Flutter/Generated.xcconfigファイルを作成します。

flutter build ios --config-only --debug --dart-define-from-file=dart_defines.json

これでxcodebuild archive実行時に環境変数が取り込まれてCI/CDができるようになります。

さいごに

--dart-define-from-fileはすごく便利なのですが、ネットで検索しても、この辺りの情報はあまり出てこないですね。この記事が誰かのお役に立てば幸いです。

1
0
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
1
0