본문 바로가기

IOS Swift

Fastlane 배포 자동화 적용(feat. iOS)

목차

  1. Fastlane 설치
  2. Fastlane 기본 설정
  3. App Store 인증
  4. 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 방법

  1. Match : private key와 certificates를 git에 암호화하여 보관하고, 이를 signing 하는 방법
  2. Cert, Sigh : private key와 certificates를 local에서 가지고 있고, 이를 sighing하는 방법
  3. 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 알림도 잘 옵니다!!!!! 행복하다~~~

 

참고

반응형

'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