1. Fastlane とは?
- Fastlaneは製品を簡単で素早くリリースする為のツールです。
- screenshotの作成、code signing処理 や ストアにアプリのリリースなど複雑な作業を行います。
上記の図の通りに、fastlaneは色々なツールが有ると見えますね!
- fastlaneの機能?
- 製品のデプロイはベタかテスティングかよく確定します。
- CIサーバーを含めてどのコンピューターにもデプロイできます。
- 各機能を拡張したり、能率的にしたりします。
- 簡単で素早くセットアップできます。
- 複雑なコマンドを覚えることはなくて、fastlane だけで良いです。
- 全部をGitで保存し、簡単に構成できます。
- 段階的に自動通信します(例:IPAファイルパス)
- 更新及リリースのスピードを上げます。
- 製品の配達プログレスを十分に実行します。
- 柔軟な構成です。
- 170以上の機能が結合されておいています。
- iOS , MacOS , Androidで使用できます。
今、必要なのはCIと結合することです。また、人間はチェーンの中で最も弱いリンクであるため、自動的に実行される作業が優先されます。
2. 設定
- GemFileに追加します。
- 全ての機能が使えるようにFastlaneの最新バージョンを使用するべきです。それは僕の貴重な経験です。
gem 'fastlane'
- インストールのために、最初にローカルでコマンドを実行します。
- バンドルを更新します
bundle install
- Fastlaneを設定します
gem install fastlane
- Init Fastlane
- init コマンドを最初に実行します。 (僕はTravis CI ではこのコマンドを実行しません。)
fastlane init
- 今回 option 4を選択します。他のオプションは次回紹介いたします。
- 実行が完了したら、下記の2ファイルを含むfastlaneフォルダが出現します。
- Appfile
- Fastfile
目標によってオプションを選択します。
3. 成分を説明します
- Appfile :
- アプリビルドに関しする情報を申告するところです。上記の3オプションの中にいずれかを選択すると、自動的にいくつかのフィールドが生成します。
- app_identifier
- apple_id
- itc_team_id
- team_id
- アプリビルドに関しする情報を申告するところです。上記の3オプションの中にいずれかを選択すると、自動的にいくつかのフィールドが生成します。
- Fastfile :
- fastlaneの構成のために script を書くするファイルです。
- fastlaneのスクリプトを作成するには、構文を理解するために取り敢えず Fastlane Documentation を読んだ方がいいです。また、これは非常に簡単で、ほとんどないので、ぜひ呼んでください。
- Vim、TextEditでFastfileを開けられますが、atomをお勧めします。
4. Fastlaneの設定
今、Fastlaneでアプリをビルドのためにスクリプトを書いてみます。それから、何かバグが有るかどうか確認しましょう。
platform :ios do
desc "Try to test app"
lane :test_lane do
run_tests(scheme: "TheLastProject_Development")
end
end
Warning !! 間違えやすいので、各桁を注意してくださいね!
結果はTerminalにたくさん ログされるので、summary だけ関心した方が良いです。
上記のスクリプトを少し説明します。
1. default_platformを申告します。
2. iosであり、endで終わるのplatformタグを作成します。このタグによって、環境がandroidではなくて iosだと分かります。これから、スクリプトを追加したい場合はこのタグに追加します。
3. test scriptを書きます :
- descはキーワードである(簡単に言えば、それはprint のような普通の函数です)、キーワードの後ろにテスクがあり、fastlaneはそのテスクが下のスクリプトの説明と分かります。テスクの意味は下記の通りです。
- スクリプトを読むと、書いた人の意図が分かるためです。
- fastlaneのログを読むと、スクリプトのどの行か分かるためです。
lane :test do
#do some things here.
end.
- 覚えやすいように、プログラム言語に比べてみますね。
lane = class
test = class_name
do = {
...
end = }
- terminal を開けて、テストしてみます。
fastlane test
5. ローカルでビルド
desc "Build App in local"
lane :build_local do
build_ios_app(
scheme: "TheLastProject_Development",
workspace: "TheLastProject.xcworkspace",
configuration: "Debug",
export_method: "development"
)
end
- Fastfile を開けて、この簡単なlaneを編集します。
- Terminalを開けて、コマンドを実行します。
bundle exec fastlane build_local
このような結果が大丈夫です。
- Archiveが成功します。
- プロジェクトの構成と接する
- *.ipaファイルをエスクポートします
Fastfile が綺麗になるように*.ipaファイルを1箇所に集めます。
default_platform(:ios)
platform :ios do
desc "Build App in local"
lane :build_local do
make_build_folder
build_ios_app(
scheme: "TheLastProject_Development",
workspace: "TheLastProject.xcworkspace",
configuration: "Debug",
export_method: "development",
output_directory: "./build",
output_name: "TheLastProject_Dev.ipa",
silent: true,
clean: true
)
end
desc "Make build Folder"
private_lane :make_build_folder do
sh "mkdir -p ./build"
end
end
ローカルで作業が完了しました。 続いてTravis CIに行きましょう。
6. CIでビルド
- Fastfileに laneコードを書きます。
desc "Build App"
lane :build do
make_build_folder
disable_automatic_code_signing(
path: "TheLastProject.xcodeproj"
)
import_certificate(
keychain_name: "ios-build.keychain",
keychain_password: "travis",
certificate_path: "./scripts/certs/dev.p12",
certificate_password: "12345678"
)
update_project_provisioning(
xcodeproj: "TheLastProject.xcodeproj",
profile: "./scripts/profiles/TheLastProject_Dev.mobileprovision",
target_filter: "TheLastProject",
build_configuration: "Debug",
)
build_ios_app(
scheme: "TheLastProject_Development",
workspace: "TheLastProject.xcworkspace",
configuration: "Debug",
export_method: "development",
output_directory: "./build",
silent: true,
clean: true,
skip_profile_detection: true,
export_options: {
provisioningProfiles: { "com.fx.thelastproject": "TheLastProject_Dev" }
}
)
enable_automatic_code_signing(
path: "TheLastProject.xcodeproj"
)
end
- .travis.ymlファイルを開けて、CIで新規作成のlane実行するのためにスクリプトを追加します。
script:
- ./scripts/linter
- bundle exec fastlane build
今、コンミットして、コードをデプロイして、 pull request を作って、結果を待ちます。
7. Laneを説明します
- ローカルで実行すると、fastlaneはXcode の auto code signingを使用するので、プロビジョニングを検出して、成功にビルドできます。
- 正しい構成を選択しなければなりません。
- configuration
- export_method
- CIで実行すると、 fastlaneは manualモードに変更します。lane buildと実行順番は下記通りです。
- ステップ 1: auto code siginingを消す
- ステップ 2: certificateを上記作成したキーチェンに再度インポートします。
- ステップ 3: auto code signingがオフになっているため、プロビジョニングが正しく必要です。 ですから update_project_provisioningコマンドを実行する必要があります
- ステップ 4: auto code signingを再度つけます。ローカルなら必要ですが、CIなら不要です。
次回の記事はアプリデプロイについて紹介します。
まとめ
- Fastlaneの設定
- IOSアプリビルドあるいはテストのためにスクリプトの書き方
- *.ipaファイルをエクスポートする
- Travis CIの上で自動ビルド.テスト