Programming/iOS

Fastlane 으로 iOS 배포를 쉽게 하자! - Beta Deployment

devssun 2019. 10. 21. 09:00
728x90
반응형

Fastlane - Beta Deployment

https://docs.fastlane.tools/getting-started/ios/beta-deployment/#uploading-your-app

fastlane으로 베타 배포를 해봅시다 💚💛💜💙
fastlane은 ruby gem 이나 brew를 이용해서 설치를 하고 프로젝트 폴더로 이동해 fastlane init 작업을 하는데요 설치하다가 아래와 같은 코드를 보게됩니다

1~4 번 중에 하나를 선택해야합니다. 일단! 2번으로 해서 베타 테스트를 올려보죠! 이 설정은 나중에 추가로 할 수 있으니 걱정안해도 됩니다!
그럼 선택한 것에 맞춰 자동으로 설치를 해줍니다.
이중인증이 되어있는 계정인 경우 이중인증 코드도 입력하게 합니다.


원래 앱 배포할 때는 developer.apple.com에서 profile, app id 를 생성하고 appstore connect에 배포할 앱을 생성해야 하는데요. 앱이 있는 지 체크하고 없으니 앱 등록해도 되냐고 물어봅니다. 사용자가 일일이 사이트에 접속하지 않아도 커맨드 창에서 앱 등록 및 배포까지 할 수 있게 해줍니다.

이런걸 이제 써봤다니.. 개인 프로젝트에도 도입해야겠다는 생각이 듭니다

암튼.. 신기한 fastlane!! 설치도 다 해주고 앱도 등록해주고!!! 😆😆😆😆
설치를 다 하고 나니 여러 주의 사항을 알려주고 마지막으로 새로운 fastlane setup을 하려면 fastlane beta 라고 입력하랍니다

그리고 fastlane beta upload 스크립트는 fastlane/Fastfile 파일에 작성되어 있으니 큰 세팅 없이도 바로 업로드할 수 있습니다

fastlane beta 실행 그리고..

사이닝 이슈

근데 프로젝트 세팅 후 바로 배포하려면 사이닝 이슈가 발생 해 이슈를 해결해야 업로드까지 됩니다.

fastlane에서 제공하는 사이닝은 두가지 방법이 있습니다. (각 항목의 설명은 위 링크에서 확인하세요! 여러명이 사용하는 경우 match를 추천드립니다 :))

  1. match
  2. cert and sigh

저는 cert and sigh 방법을 택하기로 했는데요 사이닝을 하던 중 이런 에러가 났습니다

    Your account has 2 step verification enabled
    Please go to https://appleid.apple.com/account/manage
    and generate an application specific password for
    the iTunes Transporter, which is used to upload builds

    To set the application specific password on a CI machine using
    an environment variable, you can set the
    FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD variable

위 내용은 "앱 암호"를 사용하라는 메세지입니다. - 관련 링크 앱 암호 사용하기

fastlane에서 appstore connect에 로그인하고 앱을 올리는 일련의 과정들을 거치기 때문에 안전한 로그인을 위해 앱 암호를 생성해야합니다.
fastlane에서 사용할 앱 암호를 생성하여 터미널에 입력해주면, 정상적으로 빌드가 되고 프로세스를 진행합니다. (생각보다 꽤 걸리더라고요!)


앱이 업로드가 안된다..!

저는 ipa 빌드까지 되어있던 상태였고 new binary 를 app storeconnect에 업로드 성공했다 라고 떴는데 그 이후 작업이 되지 않던 상태였어요

    [09:33:33]: Successfully uploaded the new binary to App Store Connect
    [09:33:33]: If you want to skip waiting for the processing to be finished, use the `skip_waiting_for_build_processing` option
    [09:33:33]: Waiting for processing on... app_id: 1482730132, app_version: 1.0, build_version: 1, platform: IOS
    [09:33:33]: Read more information on why this build isn't showing up yet - https://github.com/fastlane/fastlane/issues/14997
    [09:33:33]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)
    [09:34:03]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)
    ...
    [10:21:18]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)

    > 결국 강제 종료해버림

결국 실패하고 이슈를 등록했습니다.

"Waiting for the build to show up in the build list" keep getting message. Can not upload to testflight · Issue #15463 · fastlane/fastlane

이슈 해결 😭🥰

일단 Xcode에서도 업로드가 실패하고 또 업로드 성공했는 데도 앱스토어 커넥트에는 뜨지않는 이슈가 있었습니다.
애플에서는 업로드에 실패하면 사유를 메일로 보내주는데요, 이 메일 수신자가 제가 아니라 확인이 좀 늦었습니다..
결론은 앱 아이콘이 없어서 업로드가 안되고 있던 것이었습니다 ㅎ

처음 Xcode에서 프로젝트를 만들면 앱 아이콘이 없는 프로젝트가 되는데요(격자 무늬의 앱이 생성되죠),
앱스토어 커넥트에 올리기 위해서는 앱 아이콘이 반드시 필요하기 때문에 업로드가 되지 않는 것입니다!

앱 아이콘을 만들어 넣어주었고 Xcode Archive로 먼저 테스트 해본 후에 정상적인 업로드를 확인하였고
fastlane beta 명령어로 fastlane을 이용한 베타 배포까지 완료하였습니다. 제가 손으로 하는 것보다 좀 더 빠르게 진행할 수 있었어요! :)

그리고 배포 마지막 단계로 처리가 다 되면 메세지를 받을 수 있도록 처리할 수 있는데 입력하라는 데이터를 입력하긴 했지만 슬랙 메세지는 받지 못하였어요. 또 별도으ㅢ 설정이 필요한 것 같습니다.
아무튼! 커넥트에 들어가보니 테스트 준비 중 상태로 변경된 것을 확인할 수 있었습니다 👩‍💻👩‍💻👩‍💻

fastlane을 이용한 beta 배포도 완료!


이번에 fastlane을 해보면서 상당히 편리한 자동화툴이구나를 알게 되었어요 :)
그동안 어려운 거 아니여?!?! 했는데 그렇게 어렵지도 않더라고요..
진짜 이거 써야 귀찮은 작업도 안하게 되고! 효율도 좋고! 짱짱!

 

via GIPHY

혹시 안해보신 분이 있다면 개인 플젝에 도입 해보세요
어렵지 않게 할 수 있답니다 그리고 회사 프로젝트에 도입하면? 당신은 짱입니다.

반응형