LoginSignup
6
3

More than 1 year has passed since last update.

CircleCIで2FAを突破してAppStoreConnectにバイナリをアップする

Last updated at Posted at 2019-06-26

現在は秘密鍵を利用するこちらの方法で簡単にバイナリアップできるようになっています。

以下は、過去記事

CircleCIでiOSアプリをAppStoreConnectにアップしようとしたところ盛大にハマったのでノウハウを共有します。

まずFastlaneの公式ドキュメントを確認します。
・2FAでない専用のaccountを作るのが簡単
とありますが、今回は2FAが有効なユーザーで自動アップロードを行いたいです。

ジョブに必要な環境変数

ジョブの設定に必要な環境変数は次の通りです。

  • FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD
    アプリ用パスワードです。
  • FASTLANE_USER
    Apple IDです
  • FASTLANE_PASSWORD
    Apple IDのパスワードです
  • FASTLANE_SESSION
    2FA済みのセッションです。取得方法は後述します。
  • MATCH_PASSWORD
    fastlane matchの復元パスワードです

検証に使用したaccountが複数チームに所属していたため、私の環境では FASTLANE_ITC_TEAM_NAME も指定しましたが、1つのチームにだけ所属しているなら必要ないと思います。

2FAアカウントですがパスワードを環境変数に設定する必要があるのが少し不気味です。でも外したら動かないので必要なんでしょう。

FASTLANE_SESSION は 認証したリージョンと同じリージョンでないと使用できないので、実行中のCircleCIのコンテナにVNCで接続して、FASTLANE_SESSIONを取得します。
30日ごとにFASTLANE_SESSIONの生成が必要になりますが、現時点で他に方法はなさそうです。

FASTLANE_SESSION の取得方法

VNC接続手順を参考にしました。

  1. CircleCIのジョブ失敗画面から、"Rerun job" with SSH を実行
    image.png
  2. コンテナへの接続情報を確認する
    ジョブの詳細に以下の用にsshでコンテナに接続するために情報が表示されるので確認する figure.png
  3. ローカルMacからコンテナにssh接続する(ローカルで実行) sshの接続情報をもとにssh接続する。鍵はGitHubリポジトリへ接続するための鍵と同じものを使用する。私の環境では-i で明示的に鍵を指定する必要がありました。
    ssh -p <指定されたポート> <指定されたIP> -i ~/ssh/hoge_rsa
  4. vnc用のユーザーを作成する(コンテナで作業)
    sudo /usr/sbin/sysadminctl -addUser vncuser -fullName "VNC User" -password <password> -admin
  5. vnc 接続用のポートフォワーディング設定(ローカルで実行)
    ssh -p 54782 <コンテナのIP> -L5901:localhost:5900 -N -i ~/ssh/hoge_rsa
  6. vnc viewerでvnc接続する
    viewerは何でも良いと思いますが私はrealvncを使用しました。 接続先は localhost:5901 です。
    ログイン画面が出てきたら先程作成した vncuser でログインします。パスワードは先程指定したものです。
  7. FASTLANE_SESSIONの取得
    以下のコマンドを実行しセッション情報を取得します。 fastlane spaceauth -u <Apple ID>
  8. セッション情報をCircleCIの環境変数に設定する

確認

すべてが正しく設定されていれば fastlane deliver が動くはずです。

まとめ

CircleCIのサポートに問い合わせてどうにかCIにバイナリアップを組み込むことができました。
vncでコンテナに接続できるとは思っていなかったので勉強になりました。トラブルシューティングなどに応用できそうです。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3