728x90
반응형

지금 회사에서 디자인이 나오기전까지 일주일정도의 개발 여유 시간을 주셨다.

일주일 동안 fastlane 과 테스트코드를 적용한다고 말씀드리니, 흔쾌히 하도록 해주셨다.

안해본것들을 해보고 검증하는 시간을 주는 회사가 개발자 입장에서는 참 좋다.

 

일단 fastlane 을 설치해준다. 나는 homebrew를 선호하기에, 

brew install fastlane

 로 설치를 해준다.

 

현재 프로젝트 root 에서

cd ios
fastlane init

를 하면

 

터미널에서 fastlane을 어떻게 이용할지에 대해서 물어본다.

테스트플라이트에 업로드 후, 배포를 할예정이기에, 2번을 선택해주면

 

다음엔 스키마 선택이 나온다.

 

환경에 따라 테스트를 위해 스키마를 dev / pro 로 나누어 놓았는데, 테스트 플라이트에 올려서 테스트할 것은 pro 환경이기에

해당 스키마를 선택해준다.

 

애플 개발자계정과 비밀번호를 입력하고 나면

 

이런 파일 구조가 생긴다. (.env.default 는 제외)

 

fastlane 밑에 .env.default 를 만들고 애플 개발자계정에서 앱키를 발급받은 값을 넣어준다

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD=앱키

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
#
#
# For a list of all available plugins, check out
#
#

# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane

default_platform(:ios)

platform :ios do
desc "Push a new beta build to TestFlight"
lane :beta do
increment_build_number(xcodeproj: "프로젝트.xcodeproj")
build_app(workspace: "프로젝트.xcworkspace", scheme: "선택한스키마")
upload_to_testflight
end
end

파일이 있다.

 

해당 파일에서 자동으로 버전을 업데이트 해주고싶다면

 

default_platform(:ios)

platform :ios do

  def updateVersion(options)
    if options[:version]
      version = options[:version]
    else
      version = prompt(text: "버전을 입력해주세요 (ex 1.0.0) : ")
    end

    re = /\d+.\d+.\d+/
    versionNum = version[re, 0]

    if (versionNum)
      increment_version_number(
        version_number: versionNum
      )
    elsif (version == 'major' || version == 'minor' || version == 'patch')
      increment_version_number(
        bump_type: version
      )
    elsif (version == 'maintain')
    else
      UI.user_error!("[ERROR] Wrong version!!!!!!")
    end
  end


  desc "Push a new beta build to TestFlight"
  lane :beta do |options|
    cert
    sigh(force: true)
    updateVersion(options)

    increment_build_number(xcodeproj: "myApp.xcodeproj")
    build_app(workspace: "myApp.xcworkspace", scheme: "myAppScheme")
    upload_to_testflight
  end
end

해당 updateVersion 이라는 함수를 사용해주면되는데

 

나는 안드로이드 / ios 버전을 맞추는것을 좋아하기에, 빌드 버전은 수동으로 맞출 예정이라 생략했다.

 

마지막으로 package.json에

 

 

fastlane 배포 명령어를 넣어주면 끝.

 

yarn fastlane:ios 를 통해 현재 버전을 testflight 로 업데이트할수있다.

 

제일 좋은것은 archive, upload, testflight의 수출관리규정을 수동으로 하지 않아도된다는점

728x90
반응형

+ Recent posts