AppStore 심사 통과 후 작업 자동화

심사가 다닌 후에는 기뻐하는 것만으로 다음 릴리스와 마주보고 싶다.



AppStore에 공개된 뒤의 작업은 잊기 쉽기 때문에 매번 번거롭지요.
이번에는 다음 작업을 Bitrise와 GAS를 사용하여 자동화했습니다.
  • Slack에서 이해 관계자에게 문의
  • Github에서 Release Tag를 가져옵니다
  • Firebase에 dSYM을 업로드

  • 공개된 것을 감지(GAS)



    App Store Review의 상태 변경은 자동 이메일로 통보됩니다.
    게시 완료 후 알림 이메일이 Gmail에서 수신되었거나 GAS에서 검색합니다.
    검색 방법은 진흙이지만 다음 조건

    조건은 다음과 같습니다.
  • 메일 발송인이 App Store Connect인가
  • 메일 제목에 "Ready for Sale"이 포함되어 있습니까
  •   // タイトルのチェック.
        // 今回は公開時のメールを検索.
      var title = message.getSubject();
      var regexp = new RegExp("Ready for Sale");
    
      return (title.match(regexp) != null) ? true : false;
    

    본문에서 버전 번호를 얻으면 연락처 내용과 릴리스 태그에 사용할 수 있으므로 추출하십시오.
      var body = message.getPlainBody();
      var regexp = new RegExp(App Version Number: *.*.*);
    
      var versionLineStr = body.match(regexp)
      if (!versionLineStr) {
        return null
      }
      var versionString = versionLineStr[0].replace("App Version Number: ","")
        // 1.0.0などストアストアのバージョンが入ります.ビルドナンバーも取得することは可能です。
      return versionString
    

    이해관계자에게 문의(GAS + Slack App)



    앞의 메일이 적중되면 본문에서 버전 정보를 추출하여 알림 메시지를 성형합니다.
    Slack에서 이해 관계자에게 알립니다.

    릴리스 태그 끊기(GAS + Github API)



    앞의 단계가 완료되면 Github API를 사용하여 릴리스 태그를 자릅니다.
    API에는 title이나, body를 넣을 수 있으므로
    이것을 트리거로 Bitrise를 움직이는 작전입니다.

    App Store Connect에서 dSYM을 DL하고 Firebase에 업로드 (Bitrise + fastlane)



    App Store Connect상의 dSYM을 DL하려면 APIKey를 이용한 방법으로는 접속할 수 없으며 ID/PASSWORD를 이용하는 방법 밖에 없습니다.
    2FA가 필수가 되고 나서 자동화의 큰 벽이 되어 버렸습니다만, Bitrise에 지금은 맡길 수 있습니다. 참고 문서
    그러나 한 달에 한 번 설정 화면에서 세션 업데이트가 필요합니다. 2FA만 입력하면
    Bitrise에서 관리하는 AppStoreConnect 자격 증명을 사용하고 fastlane에서 다음 lane을 실행합니다.
  • download_dsyms
  • upload_symbols_to_crashlytics
  • # laneは特殊なことはしておらず、必要なものを組み合わせているだけです.
    lane :upload_dsyms do
        download_dsyms(
          version: 'latest'
        )
    
        # FirebaseにdSYMをアップロード
        upload_symbols_to_crashlytics(binary_path: './scripts/Firebase/upload-symbols', gsp_path: "./path/to/GoogleService-Info-release.plist")
      end
    

    앞으로 하고 싶은 일



    이것으로 심사 제출 후에 자동 릴리스를 선택해 두면, 나머지는 모두 자동화할 수 있었습니다. 수동 릴리스의 경우도 릴리스 버튼을 누르면, 그 후에는 자동입니다.
    Meta 정보의 제출에 관해서도 Bitrise + faslane으로 자동화는 가능하므로 앞으로 임해 나가고 싶습니다.

    전체 그림은 대체로 이런 느낌입니다.



    좋은 웹페이지 즐겨찾기