そのままは無理
BitriseはFlutterをサポートしているとはいえ、ipaを出力する方法がflutterコマンドにない。
そのため、それぞれのプラットフォームのやり方をやるしかない。
fastlane build ios --release
とかはどうあがいてもipa作れなかったので、結局fastlaneで設定するのがその後のためにもいい。
fastlane
結局いつものコレ。
fastlane initしてできたのを以下のように編集。
# AppFile
app_identifier("xxxxxx") # The bundle identifier of your app
apple_id("xxxxxxx") # Your Apple email address
itc_team_id("xxxxx") # App Store Connect Team ID
team_id("xxxxx") # Developer Portal Team ID
# For more information about the Appfile, see:
# https://docs.fastlane.tools/advanced/#appfile
# FastFile
# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
# https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
# https://docs.fastlane.tools/plugins/available-plugins
#
# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane
default_platform(:ios)
platform :ios do
desc "Push a new beta build to TestFlight"
lane :beta do
sigh(force: false, adhoc: true)
gym()
deploygate(
api_token: 'xxxxxx',
user: 'adriablue',
message: "Fastlane build #{lane_context[SharedValues::BUILD_NUMBER]}",
)
end
end
# GymFile
scheme("Runner")
clean(true)
export_options({
method: "ad-hoc",
})
export_xcargs("-allowProvisioningUpdates")
output_directory("./build") # store the ipa in this folder
おそらくなくても良い設定とかもある。もりもりで検証で入れているのもある。
これで fastlane beta で動く。まずはローカルで動くのを確認しましょう。
ビルド時のエラー
/bin/sh: /packages/flutter_tools/bin/xcode_backend.sh: No such file or directory
ほほう。flutterでのプロジェクト作成時に自動で作られたworkspaceの設定の環境変数 FLUTTER_ROOT がないことが問題。
パスとしては /Users/vagrant/Library/flutter に入るので、これをEnv Varsに入れる。
Bitrise
---
format_version: '6'
default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git
project_type: flutter
trigger_map:
- push_branch: "*"
workflow: primary
- pull_request_source_branch: "*"
workflow: primary
workflows:
deploy:
steps:
- activate-ssh-key@4.0.3:
run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}'
- git-clone@4.0.14: {}
- script@1.1.5:
title: Do anything with Script step
- certificate-and-profile-installer@1.10.1: {}
- flutter-installer@0.9.2: {}
- flutter-test@0.9.1:
inputs:
- project_location: "$BITRISE_FLUTTER_PROJECT_LOCATION"
- flutter-build@0.9.1:
inputs:
- project_location: "$BITRISE_FLUTTER_PROJECT_LOCATION"
- xcode-archive@2.4.18:
inputs:
- project_path: "$BITRISE_PROJECT_PATH"
- scheme: "$BITRISE_SCHEME"
- export_method: "$BITRISE_EXPORT_METHOD"
- configuration: Release
- deploy-to-bitrise-io@1.3.19: {}
primary:
steps:
- activate-ssh-key@4.0.3:
run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}'
- git-clone@4.0.14: {}
- certificate-and-profile-installer@1.10.1: {}
- flutter-installer@0.9.2: {}
- flutter-build@0.9.1:
inputs:
- platform: ios
- cocoapods-install@1.7.2:
inputs:
- source_root_path: "$BITRISE_SOURCE_DIR/ios"
- fastlane@2.3.12:
inputs:
- work_dir: "$BITRISE_SOURCE_DIR/ios"
- lane: beta
- deploygate--upload-app-bitrise-step@1.0.1:
inputs:
- owner_name: adriablue
- app_path: "$FLUTTER_IPA_PATH"
- api_key: "$DEPLOYGATE_API_KEY"
- slack@3.1.2:
is_always_run: false
inputs:
- webhook_url: "$slack_incomming_url"
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: ad-hoc
- opts:
is_expand: false
DEPLOYGATE_USER: adriablue
- opts:
is_expand: false
FLUTTER_ROOT: "/Users/vagrant/flutter-sdk/"
- opts:
is_expand: false
FLUTTER_IPA_PATH: "/Users/vagrant/git/ios/build/Runner.ipa"
- 設定している環境変数はこんな感じ。あとはPasswordにdeploygate, fastlaneのパスワードなどを入れる。
あとはiosのプロジェクト側でCode SigningをAutomaticじゃなくてManualにした。 - workflowでFlutterのタスクはいろいろあるんだけど、
Flutter
じゃなくてFlutter Build
じゃないとsixのライブラリがなくてビルドできない。でもFlutter
の方にもbuildができる引数があるので注意
これでFlutterでもBitriseで動く。まる2日くらいかかったぞ・・・