iOS 앱 출시 흐름 자동화 도구 fastlane 배포
10330 단어 XcodeSwiftObjective-C
배경
slack이나 deploygate, circleci에 의식을 돌려와 관련하여 잘 듣는 fastlane.
이름은 알고 있지만, 지금 일어나 무엇을 해줄지 잘 모르기 때문에 만지면서 위해 해보기로 했습니다.
작업의 목표로서,
이러한 목표는 그 자체로 보면 상당한 효율성으로 보이지 않을 수도 있지만, circleci와 slack을 결합하여 상당한 효율성을 기대할 수 있다고 생각합니다.
그들에 대해서는 나중에 추가할 예정입니다.
공식 가이드
설치
전제
Mac OS 10.9 or newer
Ruby 2.0 or newer (ruby -v)
Xcode
작업
fastline 설치
sudo gem install fastlane --verbose
Xcode 명령 줄 도구의 최신 버전 설치
※ 최신이 아닌 경우
xcode-select --install
위 명령을 터미널에서 입력하면 팝업이 표시되므로 "설치"를 클릭하십시오.
fastlane을 실행하는 데 시간이 오래 걸리는 경우 다음 명령
gem cleanup
설정
전제
Mac OS 10.9 or newer
Ruby 2.0 or newer (ruby -v)
Xcode
작업
fastline 설치
sudo gem install fastlane --verbose
Xcode 명령 줄 도구의 최신 버전 설치
※ 최신이 아닌 경우
xcode-select --install
위 명령을 터미널에서 입력하면 팝업이 표시되므로 "설치"를 클릭하십시오.
fastlane을 실행하는 데 시간이 오래 걸리는 경우 다음 명령
gem cleanup
설정
fastlane init
실행하면 다음을 듣기 때문에 입력
Your Apple ID (e.g. [email protected]):
→ 자신의 AppleID 입력
Password (for [email protected]):
→appleID 비밀번호 입력
Multiple teams found, please enter the number of the team you want to use:
1) XXXXXXXXXX "Takashi Kudo" (Individual)
2) XXXXXXXXXX "hoge, Inc." (Company/Organization)
→AppleID가 복수의 계정에 붙어 있는 경우는 적절한 쪽을 선택 ※이번은 1
+----------------+--------------------------------------------------------------------------+
| Detected Values |
+----------------+--------------------------------------------------------------------------+
| Apple ID | [email protected] |
| App Name | SampleProject20160205 |
| App Identifier | tokyo.swift.SampleProject20160205 |
| Project | /Users/tac/Desktop/SampleProject20160205/SampleProject20160205.xcodeproj |
+----------------+--------------------------------------------------------------------------+
[14:35:35]: This app identifier doesn't exist on iTunes Connect yet, it will be created for you
[14:35:35]: This app identifier doesn't exist on the Apple Developer Portal yet, it will be created for you
Please confirm the above values (y/n)
→itune Connect등의 설정이 되어 있지 않은 경우는, 자동으로 설정해 주기 때문에 이것을 받을 수 있을지 어떨지를 선택. yes를 선택해 봅니다.
※ no를 선택하면 App Idendifier를 듣기 때문에 수동으로 입력합니다.
[14:36:25]: Created new file './fastlane/Appfile'. Edit it to manage your preferred app metadata information.
[14:36:25]: Creating the app on iTunes Connect and the Apple Developer Portal
+----------------+-----------------------------------+
| Summary for produce 1.1.1 |
+----------------+-----------------------------------+
| username | [email protected] |
| app_identifier | tokyo.swift.SampleProject20160205 |
| app_name | SampleProject20160205 |
| sku | 1454650585 |
| language | English |
| skip_itc | false |
| skip_devcenter | false |
| team_id | 3XL44PTR2S |
+----------------+-----------------------------------+
[14:36:28]: Creating new app 'SampleProject20160205' on the Apple Dev Center
[14:36:29]: Created app 336BGKV7DM
[14:36:29]: Finished creating new app 'SampleProject20160205' on the Dev Center
[14:36:31]: Creating new app 'SampleProject20160205' on iTunes Connect
[14:36:33]: Successfully created new app 'SampleProject20160205' on iTunes Connect with ID 1081728442
[14:36:33]: Loading up 'deliver', this might take a few seconds
[14:36:33]: Login to iTunes Connect ([email protected])
[14:36:35]: Login successful
+--------------------+-----------------------------------+
| deliver 1.9.0 Summary |
+--------------------+-----------------------------------+
| username | [email protected] |
| app_identifier | tokyo.swift.SampleProject20160205 |
| metadata_path | ./fastlane/metadata |
| screenshots_path | ./fastlane/screenshots |
| skip_binary_upload | false |
| skip_screenshots | false |
| skip_metadata | false |
| force | false |
| submit_for_review | false |
| automatic_release | false |
+--------------------+-----------------------------------+
[14:36:36]: Writing to 'fastlane/metadata/en-US/description.txt'
[14:36:36]: Writing to 'fastlane/metadata/en-US/keywords.txt'
[14:36:36]: Writing to 'fastlane/metadata/en-US/release_notes.txt'
[14:36:36]: Writing to 'fastlane/metadata/en-US/support_url.txt'
[14:36:36]: Writing to 'fastlane/metadata/en-US/marketing_url.txt'
[14:36:36]: Writing to 'fastlane/metadata/en-US/name.txt'
[14:36:36]: Writing to 'fastlane/metadata/en-US/privacy_url.txt'
[14:36:36]: Writing to 'fastlane/metadata/copyright.txt'
[14:36:36]: Writing to 'fastlane/metadata/primary_category.txt'
[14:36:36]: Writing to 'fastlane/metadata/secondary_category.txt'
[14:36:36]: Writing to 'fastlane/metadata/primary_first_sub_category.txt'
[14:36:36]: Writing to 'fastlane/metadata/primary_second_sub_category.txt'
[14:36:36]: Writing to 'fastlane/metadata/secondary_first_sub_category.txt'
[14:36:36]: Writing to 'fastlane/metadata/secondary_second_sub_category.txt'
Successfully created new configuration files.
[14:36:36]: Downloading all existing screenshots...
[14:36:37]: Successfully downloaded all existing screenshots
[14:36:37]: Successfully created new Deliverfile at path 'fastlane/Deliverfile'
[14:36:37]: xcrun xcodebuild -list -project './SampleProject20160205.xcodeproj'
[14:36:37]: 'snapshot' not enabled.
[14:36:37]: 'cocoapods' not enabled.
[14:36:37]: 'carthage' not enabled.
[14:36:37]: Created new file './fastlane/Fastfile'. Edit it to manage your own deployment lanes.
[14:36:37]: fastlane will send the number of errors for each action to
[14:36:37]: https://github.com/fastlane/enhancer to detect integration issues
[14:36:37]: No sensitive/private information will be uploaded
[14:36:37]: You can disable this by adding `opt_out_usage` to your Fastfile
[14:36:37]: Successfully finished setting up fastlane
설치 완료!
실행
다음 항목은 구체적으로는 Fastfile에 처리를 작성한 다음 line으로 정의한 명령을 두드리는 것으로 실행됩니다.
XCTest 자동화
desc "XCTestのを実行します。"
lane :test do
xctest(
scheme: "SampleProject2016020_2",
destination: "platform=iOS Simulator,name=iPhone 5s,OS=9.2",
)
end
fastlane test
프로젝트 폴더 > fastlane > test_output > report.html을 클릭하면 이런 식으로 XCTest 실행 결과가 표시됩니다.
보다 자세히 설명하는 예
# Run tests in given simulator
xctest(
destination: "name=iPhone 5s,OS=8.1",
destination_timeout: 120, # increase device/simulator timeout, usually used on slow CI boxes
reports: [{
report: 'html',
output: './build-dir/test-report.html', # will use XCODE_BUILD_PATH/report, if output is not provided
screenshots: 1
},
{
report: 'junit',
output: './build-dir/test-report.xml'
}]
)
IPA 파일을 만들고 배포 게이트에 업로드
DeployGate API 정보는 여기
만약을 위해서입니다만, 이하라면 실패합니다.
desc "社内向け配信"
lane :for_inhouse do
sigh(
adhoc: true
)
ipa(
scheme: 'SampleProject2016020_2',
configuration: 'Debug'
)
deploygate(
user: 'hogehoge',
api_token: 'hogehoge'
)
end
[18:24:58]: A build error occured. You are using legacy `shenzhen` for building
[18:24:58]: it is recommended to upgrade to `gym`:
[18:24:58]: https://github.com/fastlane/gym
[18:24:58]: krausefx-ipa build -s "SampleProject2016020_2" -c "AdHoc" -m "/Users/tac/Desktop/SampleProject2016020_2/AdHoc_tokyo.swift.SampleProject2016020-2.mobileprovision" --verbose | xcpretty
[18:24:58]: -------------------------------------------------------
[18:24:58]: Variable Dump:
[18:24:58]: {:DEFAULT_PLATFORM=>:i
위의 ipa 명령은 shenzhen을 빌드에 사용하고 있지만, 작동하지 않기 때문에,
htps : // 기주 b. 코 m / 후 st ぁ네 / gym
에서 gym 설치
sudo gem install gym
방금 전을 ipa에서 gym으로 변경
desc "社内向け配信"
lane :for_inhouse do
sigh(
adhoc: true
)
ipa(
scheme: 'SampleProject2016020_2',
configuration: 'Debug'
)
deploygate(
user: 'hogehoge',
api_token: 'hogehoge'
)
end
그러면 deploygate로 ipa 파일이 업데이트됩니다.
덧붙여서, api_token은 deploygate 사이트에 로그인하여 확인할 수 있습니다.
fastlane 설정tips
여기에 fastlane의 액션으로서 Fastfile에 쓰는 내용은 정리되어 있습니다.
참고문헌
Reference
이 문제에 관하여(iOS 앱 출시 흐름 자동화 도구 fastlane 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ToraDady/items/4c6ab9f6bd2fde83f82d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(iOS 앱 출시 흐름 자동화 도구 fastlane 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ToraDady/items/4c6ab9f6bd2fde83f82d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)