Upgrade to Pro — share decks privately, control downloads, hide ads and more …

App Store Connect APIで 作業時間を増やそう

App Store Connect APIで 作業時間を増やそう

「【GO/note/令和トラベル】After iOSDC & DroidKaigi 2024」で発表した資料です。
https://reiwatravel.connpass.com/event/327079/

GO Inc. dev

October 02, 2024
Tweet

More Decks by GO Inc. dev

Other Decks in Programming

Transcript

  1. © GO Inc. 2 自己紹介 GO株式会社 開発本部 ソフトウェア開発統括部 フルスタックエンジニア /

    伊藤 伸裕 Webシステム、モバイルアプリの受託開発、環境系ベンチャーでのエンジニアリ ングマネージャー経験を経て、2023年9月にGO株式会社にフルスタックエンジニ アとして入社。 ベースはiOSアプリエンジニアですが、アプリ・バックエンドを問わずGOのシス テム全体を渡り歩きながら開発をしています。
  2. © GO Inc. App Store Connect・Apple Developer Portal のAPI これらのサイト上の作業のほぼすべての操作にアクセスできる。

    (証明書発行、規約同意など、一部できないこともある) iOSアプリのCIを設定したことがあれば、 fastlaneなどを通して知らず知らず使っているかも。 8 App Store Connect API
  3. © GO Inc. TestFlight参加できる画面をApp Store Connect APIで作成 権限のあるスタッフは 参加ページからボタンクリックだけで TestFlightに自分で

    参加できるようになった 誰が登録しているかもわかるので、 退職処理も確実にできるように。 11 TestFlightセルフサービス参加 Google Cloud Identity-Aware Proxy App Engine Staffs App Store Connect API (TestFlight)
  4. © GO Inc. App Store Connect APIを使いこなすには、 普段から使える環境を用意するのが大事 ドキュメントをブックマークに入れておく https://developer.apple.com/documentation/appstoreconnectapi/

    認証を通したcurlを使えるようにラッパーコマンドを作っておく 16 App Store Connect APIと普段から仲良く $ ./asccurl -s "https://api.appstoreconnect.apple.com/v1/apps/XXXXXXXXXX" | jq ".data.attributes" { "name": "GO / Taxi app for Japan", "bundleId": "com.dena.automotive.taxibell", (中略) }
  5. © GO Inc. 18 Appendix: asccurlの実装 source "https://rubygems.org" gem "jwt"

    #!/bin/bash export ISSUER_ID="00000000-0000-0000-0000-000000000000" export KEY_ID="0000000000" SERVICE_NAME="AppStoreConnect_AuthKey" export KEY=$(security find-generic-password -a $KEY_ID -s $SERVICE_NAME -w \ | xxd -p -r | rev | cut -c 1- | rev) token=$(bundle exec ruby <<EOF require "jwt" puts JWT.encode( { iss: ENV["ISSUER_ID"], exp: Time.now.to_i + 20 * 60, aud: "appstoreconnect-v1" }, OpenSSL::PKey.read(ENV["KEY"]), "ES256", header_fields={ kid: ENV["KEY_ID"] } ) EOF ) curl -H "Authorization: Bearer $token" $@ 2. 左のスクリプト内の ISSUER_ID、KEY_ID を適切に設定しておく また、実行権限も付与しておく 3. キーチェーンアクセスで「新規パスワード項目」 以下の内容で保存しておく キーチェーン項目名 AppStoreConnect_AuthKey アカウント名 KEY_ID と同じ パスワード APIキーのp8ファイルの内容 1. Gemfileを作成してbundle installしておく