IOS Swift

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

🐶 Hong 2022. 4. 21. 13:44

목차

  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 알림도 잘 옵니다!!!!! 행복하다~~~

 

참고

반응형