Jenkins에서 Unity 빌드 후 AppStore에 자동 업로드 환경 구축

Jenkins에서 Unity로 빌드를 하는 것까지는 꽤 오랫동안 잘 사용하고 있었는데, 귀찮아서 AppStore와 GooglePlay에 자동으로 업로드 하는 것 까지는 구현하지 않고 사용하고 있었습니다. 이번에 새로 Jenkins 환경을 구현하는 일이 있어서 진행하다 보니, 굳이 저걸 왜 안하고 있었는지 싶어서 진행했습니다.

Jenkins에서 Unity 빌드 후 AppStore에 자동 업로드 환경 구축

Jenkins 빌드 후 시나리오

  1. App Store의 경우
    • ipa를 app-store 용으로 빌드 한 다음에, 만들어진 ipa를 appstore에 자동 업로드
    • 이후 스토어에서 업데이트 하는 것은 직접 작성
    • fastlane 등을 사용하여 스토어 정보까지 업데이트하는 것은 나중에
  2. Google Play의 경우
    • aab를 빌드하도록 한후, 만들어진 aab를 Google Play 개발자 콘솔의 내부테스트 용으로 빌드 자동 업로드
    • 마찬가지로 스토어에서 업데이트 하는 것은 직접 작성

Jenkins 빌드 후 App Store IPA 업로드 자동화

1. AppStore 전용 ipa 빌드 만들기

먼저 xcode 빌드에서 app-store 용으로 빌드를 하도록 Job을 추가합니다. Jenkins의 Xcode 플러그인에서 Export method만 app-store로 바꾸어 주면 끝.

Export method만 app-store로 바꾸어 줌
Export method만 app-store로 바꾸어 줌

2. App Store 계정 관리에서 앱 암호 만들기

커맨드 라인에서 개발자 계정과 비번을 입력해서 인증을 할 수도 있으나 이 것은 너무나 위험한 일입니다. 그래서, 앱에서 사용하는 별도의 인증 암호를 만들 수 있습니다.

https://appleid.apple.com/account/manage 에 접속해서, 개발자 계정으로 로그인 한 후 터미널에서 암호를 입력하기 위해 앱암호를 만듭니다.

앱스토어 계정에서 앱암호 만들기
앱스토어 계정에서 앱암호 만들기

앱 암호 생성을 누르면, 문구를 하나 입력해서 앱 암호를 만들라고 합니다. 여기에 앱암호의 구별을 위한 아이디를 입력합니다. 우리는 ‘JENKINS’로 했습니다. 아래 화면처럼 암호가 생성되면 잘 복사해둡니다.

만들어진 앱 암호
만들어진 앱 암호

3. Jenkins의 ‘빌드 후 작업’에 ‘Execute Shell’ 명령 추가하기

이제 만들어진 앱 암호를 가지고 JENKINS에서 xcode 빌드 명령 후에 다음과 같이 Shell Script를 실행하도록 하면 끝입니다.

Jenkins의 빌드후 작업에 Execute Shell 추가
Jenkins의 빌드후 작업에 Execute Shell 추가
# ipa 파일 경로 찾기
IPA_FILE=$(find build/ios/build/Release-iphoneos -name "*.ipa" -print | sort -t_ -k2,2nr | head -n 1)

# ipa 파일이 존재하는지 확인
if [ -z "$IPA_FILE" ]; then
  echo "IPA 파일을 찾을 수 없습니다. 빌드를 Unstable 상태로 설정합니다."
  exit 1  # 빌드를 Unstable로 설정
fi

# 빌드 업로드
xcrun altool --upload-app --type ios --file "$IPA_FILE" --verbose --username "애플 개발자 계정 이메일" --password "JENKINS용 앱암호"

위의 내용에서 #ipa 파일 경로 (build/ios/build/Release-iphoneos) 는 각 시스템에서 사용하는 xcode의 build 폴더명을 잡아주어야 합니다.

위 스크립트를 통해, ipa 파일이 업로드 되는 내용을 자세히 확인할 수 있습니다. 만약 upload에 에러가 발생하면, Job이 실패합니다. 실패 후 콘솔 기록에서 자세한 내용을 확인할 수 있습니다.

Build가 성공하면, App Store의 App Store Connect에 들어가, 해당 앱의 Testflight 항목에 들어가면, 업로드된 빌드를 확인할 수 있습니다.

AppStore 업로드 자동화의 이점

ipa 업로드를 자동화하면, 빌드 서버를 따로 운영할 경우 별도로 xcarchive나 ipa를 열어서 업로드하는 수고를 덜 수 있다는 데 있습니다. 더 나가, 업로드시 발생하는 여러가지 문제들이 빌드와 함께 묶이면서, 업로드의 문제를 바로바로 파악하고 수정할 수 있습니다.

일단 ipa 업로드까지 자동화했으니, fastlane을 이용해서, 앱스토어 정보 업데이트까지 한꺼번에 진행할 수 있게 해 볼 예정입니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다