개요
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_blockd을 통해 입력된 value에 대한 검증도 가능하다.
[
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) # 사용자가 입력을 제공하지 않았을 경우 default value를 사용.
]
end
def self.output
# 상단에서 정의한 SharedValues에 대한 설명을 작성한다.
[
['VALIDATE_IPA_CUSTOM_VALUE', 'value가 무엇을 담고 있는지에 대한 설명']
]
end
def self.return_value
# Action이 return value를 제공한다면 그것에 대한 설명을 작성한다.
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 Built-in Action과 동일하게 별다른 작업 없이 사용할 수 있다.
5. fastlane main repo에 제출
- 직접 만든 Action을 fastlane의 Built-in Action으로 제출하고 싶다면 fastlane의 GitHub 저장소에 PR을 제출하면 된다.
5.1. Built-in Action으로 승인하는 경우
- 일반적으로 대다수의 개발자가 사용할 수 있다.
- 모바일 앱 개발자들의 고충을 해결한다. (iOS 및 Android)
- 쉽게 읽을 수 있는 문서와 우수한 테스트 커버리지를 가졌다.
5.2. Built-in Action으로 거절하는 경우
- 소수의 개발자만을 위한 특정한 유스 케이스를 해결한다.
- 타사 서비스의 API에 접근하면서 타사 서비스가 Action을 소유하거나 유지 보수한다.
- 미래에 많은 유지 보수 작업을 필요로 하는 복잡한 Action이다.
- 모바일 개발자와 관련없는 모든 것.
댓글남기기