Fastfile
code:console
fastlane レーン名 key:value key2:value2 Lane は Fastfile に下記のように記載する。受け渡されたオプションには Ruby のハッシュとしてアクセスできる。 code:ruby
desc "説明"
# ...
end
実行される fastlane コマンドとその lane の定義の例を挙げると、下記のようになる。 code:console
fastlane deploy submit:false build_number:24
code:ruby
lane :deploy do |options|
# ...
# submitがtrueの時のみ実行される
end
# ...
# ...
end
code:ruby
lane :deploy do |options|
# ...
build(release: true)
# ...
end
lane :staging do |options|
# ...
build # オプションなしでの呼び出しも可能
# ...
end
lane :build do |options|
# オプションなしであれば Staging, ありであれば Release スキームでビルドする
scheme = (options:release ? "Release" : "Staging") build_ios_app(scheme: scheme)
end
lane の実行結果を戻り値として受け取ることもできる。戻り値は、lane 定義の最終行の評価値を返すことになる。 code:ruby
lane :deploy do |options|
value = calculate(value: 3)
puts value # => 5
end
lane :calculate do |options|
# ...
2 + options:value # the last line will always be the return value end
上記のように lane を他の lane から呼び出したりできる性質から、fastlane コマンド経由で直接実行させたくない lane を記載したいケースもあるかもしれない。そのような場合には private lane を定義することができる。 code:ruby
private_lane :レーン名 do |options| # ...
end
error
処理中に問題が発生した場合は、error ブロックが呼び出される。
code:ruby
error do |lane, exception|
# エラー時の処理
# Slack などに通知したり、とか
end
before_each, after_each
before_each, after_each ブロックは、各種 lane の実行前/後に毎回 呼び出される。ただし、error が発生した場合は after_each ブロックは呼び出されない ので注意。 code:ruby
before_each do |lane, options|
# ...
end
after_each do |lane, options|
# ...
end
before_all, after_all
before_all, after_all ブロックは、1回の lane コマンド実行の最初/最後に 呼び出される。ただし、error が発生した場合は after_all ブロックは呼び出されない ので注意。 code:ruby
before_each do |lane, options|
# ...
end
after_each do |lane, options|
# ...
end
fastlane では、Appfile や Matchfile 等の設定ファイルに記載された設定値を読み出して利用できる。ただし、同一の設定項目に対して設定値が2つ以上記載されていた場合、最初に記載されていた設定値のみが利用されることになる。例えば、Appfile に複数の App ID が記載されていても、最初に記載された方が設定値として採用され、後者は無視される。 code:ruby
app_identifier "net.tasuwo.XXX"
app_identifier "net.tasuwo.ignore.XXX" # こっちは無視される
これら設定ファイルに、特定の Lane、あるいはプラットフォーム用の設定値を記載する ことができる。このためには for_lane や for_platform を利用する。 例えば以下のように記載すると、デフォルトでは App ID は net.tasuwo.XXX になるけれど、lane enterprise を実行するときは net.tasuwo.XXX.enterprise になり、mac プラットフォームで lane release を実行する際には net.tasuwo.XXX.mac.release となる。 code:ruby
app_identifier "net.tasuwo.XXX"
for_lane :enterprise do
app_identifier "net.tasuwo.XXX.enterprise"
end
for_platform :mac do
app_identifier "net.tasuwo.XXX.mac"
for_lane :release do
app_identifier "net.tasuwo.XXX.mac.release"
end
end
参考