概要
fastlaneのカスタムActionを作成する方法をまとめる。
手順
1. Actionの例
2. Actionテンプレートの生成
fastlane new_action
- Actionの命名は
testflightやupload_to_s3のような形式で記述する。 - コマンドの実行が完了すると
actionsパスに[action_name].rbというRubyファイルが生成される。 - fastlaneが適用されたプロジェクトのパスでコマンドを実行した場合は
fastlane/actionsパスに生成される。
3. Actionの記述
module Fastlane
module Actions
module SharedValues
# LaneまたはAction間でグローバルに共有するSharedValuesを定義する。
VALIDATE_IPA_CUSTOM_VALUE = :VALIDATE_IPA_CUSTOM_VALUE
end
class ValidateIpaAction < Action
def self.run(params)
# fastlaneがパラメータの読み取りと環境変数の取得を処理する。
UI.message "Parameter API Token: #{params[:api_token]}"
# lane_contextを通じてLaneまたはAction間でグローバルに共有されるSharedValuesにアクセスできる。
# Actions.lane_context[SharedValues::VALIDATE_IPA_CUSTOM_VALUE] = "my_val"
# custom_value = Actions.lane_context[SharedValues::VALIDATE_IPA_CUSTOM_VALUE]
end
#####################################################
# @!group Documentation
#####################################################
def self.description
"Actionが実行する処理についての簡潔な説明を80文字以内で記述する。"
end
def self.details
"Actionが実行する処理についてより詳細な説明を記述する。"
end
def self.available_options
# Actionがサポートするすべてのパラメータについての説明を提供し、verify_blockで入力値の検証も可能。
[
FastlaneCore::ConfigItem.new(key: :api_token,
env_name: "FL_VALIDATE_IPA_API_TOKEN", # 環境変数の名前
description: "API Token for ValidateIpaAction", # パラメータについての簡潔な説明
verify_block: proc do |value|
UI.user_error!("No API token for ValidateIpaAction given, pass using `api_token: 'token'`") unless (value and not value.empty?)
end),
FastlaneCore::ConfigItem.new(key: :development,
env_name: "FL_VALIDATE_IPA_DEVELOPMENT",
description: "Create a development certificate instead of a distribution one",
is_string: false, # true: 入力が文字列であるかを検証、false: すべてのデータ型を渡すことが可能
default_value: false) # ユーザーが入力を提供しなかった場合のデフォルト値。
]
end
def self.output
# 上部で定義したSharedValuesについての説明を記述する。
[
['VALIDATE_IPA_CUSTOM_VALUE', 'valueが何を含んでいるかについての説明']
]
end
def self.return_value
# Actionが戻り値を提供する場合はその説明を記述する。
end
def self.authors
# 名前またはユーザー名を記述する。
["Your GitHub/Twitter Name"]
end
def self.is_supported?(platform)
# Actionがサポートするplatformを記述する。
#
# true
#
# platform == :ios
#
# [:ios, :mac].include?(platform)
#
platform == :ios
end
end
end
end
4. Actionの使用
validate_ipa(
api_token: "api_token",
development: false
)
- 自作のActionはfastlaneのビルトインActionと同様に特別な作業なしで使用できる。
5. fastlaneメインリポジトリへの提出
- 自作のActionをfastlaneのビルトインActionとして提出したい場合はfastlaneのGitHubリポジトリにPRを提出する。
5.1. ビルトインActionとして承認されるケース
- 一般的に大多数の開発者が使用できる。
- モバイルアプリ開発者の課題を解決する(iOSおよびAndroid)。
- 読みやすいドキュメントと優れたテストカバレッジを持っている。
5.2. ビルトインActionとして却下されるケース
- 少数の開発者のみを対象とした特定のユースケースを解決する。
- サードパーティサービスのAPIにアクセスし、そのサードパーティサービスがActionを所有または保守している。
- 将来的に多くのメンテナンス作業を必要とする複雑なActionである。
- モバイル開発者に関連しないすべてのもの。
コメントする