목차
- Fastlane 설치
- Fastlane 기본 설정
- App Store 인증
- Appfile, Fastfile 수정
1. Fastlane 설치
Fastlane을 설치하기 전에 xcode 먼저 설치하라고 합니다. +_+
!? 엄청 오래걸리네요.. 음 한 2,3 시간정도 걸린 것 같습니다.
xcode 업데이트가 끝났으면 Fastlane을 설치해 줍시다.
Homebrew로 설치하면 루비버전에 맞춰서 fastlane을 설치해준다고 좋다고 하네요.
brew로 설치하면 되겠습니다~!
2. Fastlane 설정
xcode 프로젝트 파일이 있는 곳으로 이동해서 fastlane init을 해줍니다.
스크린샷 자동찍기, 테스트플라이트 올리기, 앱스토어 올리기, 수동적으로 설정 이런 문구가 나옵니다.
이 선택은 초기 셋팅만 도와줄 뿐이어서 아무거나 선택해도 상관없습니다. 나중에 다 바꿀 수 있습니다.
... 설정 중 ...
// Error
Operation not permitted
?? 제 프로젝트 어떤 파일에 접근이 불가능하다고 에러가 떴습니다.
터미널의 접근 권한을 허용 해주고 다시 init 을 해봅시다. 🥲
음 하면서 Apple ID 입력해주고 패스워드 입력주고 하다가 갑자기 이런 문구가 뜹니다.
저 위의 문구 대로 따라 해봅시다.
https://appleid.apple.com/account/manage 로 이동 한 후
앱 암호를 만들고 만들어진 암호를 입력해주면 됩니다.
이것은 매번 fastlane 쓸 때 마다 아이디 적고, 비밀번호 적고, 이중인증 하고 하는 것이 아니라 fastlane이 앱 암호로 알아서 로그인 할 수 있게 해줍니다.
이것들을 해주고 설정이 끝나면
Gemfile
Gemfile.lock
fastlane/Appfile
fastlane/Fastfile
이런 4개의 파일이 생깁니다.
Gemfile, Gemfile.lock은 fastlane 프로그램 자체의 버전 등을 관리하는 파일이고
fastlane 폴더 안에 있는 두개의 파일이 관리하는 앱 프로젝트, 애플 계정, 그리고 lane 설정에 대한 내용을 담고 있기 때문에 주로 사용하게 될 파일입니다.
쉽게 말하면 fastlane으로 배포를 자동화하고 싶다. 그러면 Fastfile에 배포를 자동화하는 명령어를 입력해준다던가 그런 작업들을 하게 될 것입니다.
그리고 위 4개의 파일은 팀원들과 공유하는 것이 좋습니다. gitignore에 적지 않도록 합니다.
팀원들도 명령어로 자동으로 배포하도록 할 것이니까요.
3. App Store 인증
Appstore connect에 앱을 업로드할 때도 인증 과정이 필요했습니다.
Fastlane을 사용하더라도 이런 인증과정을 거쳐야 할 것 입니다.
Fastlane에서 제공하는 3가지 Signing 방법
- Match : private key와 certificates를 git에 암호화하여 보관하고, 이를 signing 하는 방법
- Cert, Sigh : private key와 certificates를 local에서 가지고 있고, 이를 sighing하는 방법
- Manual : Apple Developer Portal에서 .p12, .cer, .mobileprovision을 직접 signing 하는 방법
아까 init 때 4번으로 선택해서 그런지 쭉 따라오다보니 3 방법으로 되어져 있었습니다.
Fastlane 공식문서에서는 1번 방법을 추천합니다.
1번 방법으로 할 시 새로운 팀 멤버가 들어올 경우 개발 장비를 세팅할 때 쉽고 간편하게 할 수 있다고 합니다.
각 방법에 대한 설명 : https://docs.fastlane.tools/codesigning/getting-started/#manually
일단 3번에서 1번 방법으로 바꾸는 것은 다음 글에서 해보고 '배포 자동화'에 집중해 보겠습니다.
4. Appfile, Fastfile 수정
fastlane 폴더의 Appfile에 vi Appfile 명령어를 통해 app_identifier 과 apple_id 를 수정해줍니다.
그리고 어떤 것을 자동화 할 지 Fastfile 파일도 수정하러 갑시다.
일단 수정한 전체 파일을 보여드리겠습니다.
# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
# https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
# https://docs.fastlane.tools/plugins/available-plugins
#
# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane
default_platform(:ios)
desc "build app and upload to testflight"
lane :beta do
get_certificates
get_provisioning_profile
increment_build_number(
build_number: latest_testflight_build_number + 1
)
build_app(
scheme: "VideoConverter"
)
upload_to_testflight
slack(
message: "Testflight 배포 성공",
slack_url: "https://hooks.slack.com/services/T74H5245A/B03C8PK6HT6/SDA4iR...~예시"
)
end
platform :ios do
error do |lane, exception, options|
slack(
message: "에러 발생 : #{exception}",
success: false,
slack_url: "https://hooks.slack.com/services/T74H5245A/B03C8PK6HT6/SDA4iR...~예시"
)
end
end
따로따로 떼서 자세하게 살펴보겠습니다.
desc "build app and upload to testflight"
// fastlane beta 이렇게 명령어 입력하면 밑에 작성되어 있는 것들이 주르륵 실행 됨
lane :beta do
// 아까 샤이닝 3가지 방법 중 2번째
get_certificates
get_provisioning_profile
// 빌드 넘버 +1 해주는 것
increment_build_number(
build_number: latest_testflight_build_number + 1
)
// 빌드 할 앱
build_app(
scheme: "VideoConverter"
)
// TestFlight에 업로드 해라
upload_to_testflight
// Slack에 message 보내라
slack(
message: "Testflight 배포 성공",
slack_url: "https://hooks.slack.com/services/T74H5245A/B03C8PK6HT6/SDA4iR...~예시"
)
//끝
end
// 에러 나면
error do |lane, exception, options|
// 슬랙 메세지 보내라
slack(
message: "에러 발생 : #{exception}",
success: false,
slack_url: "https://hooks.slack.com/services/T74H5245A/B03C8PK6HT6/SDA4iR...~예시"
)
end
다 수정하고 저장했으면
Fastlane beta 명령어를 통해 테스트플라이트에 잘 올라가나 확인해 보시면 되겠습니다~~
잘 올라가네요. 구웃 ✌️
Slack 알림도 잘 옵니다!!!!! 행복하다~~~
참고
- fastlane 공식문서 : https://docs.fastlane.tools/
- Slack webhock URL 생성: https://codesquad-members.slack.com/apps/new/A0F7XDUAZ--
'IOS Swift' 카테고리의 다른 글
iOS 앱 버전 코드로 확인하기 - Swift (0) | 2022.06.29 |
---|---|
Fastlane Match로 Signing 하기(feat. iOS) (0) | 2022.04.22 |
RxSwift 정리 (0) | 2022.03.30 |
iOS - 이벤트 처리 흐름 (0) | 2022.02.11 |
App Store 개발자 등록하기 (0) | 2021.12.20 |