目次

【fastlane】Testflight配信時にApp Store Connect APIを利用する


fastlaneを久しぶりに触った。今日学んだこと。

fastlaneの二要素認証に変更あり

AppStoreにビルドしたアプリをアップロードする際、二要素認証が必要となる。

かなり以前に、fastlaneのApplicationSpecificPasswordを作成していたが、いつの間にか利用できなくなり、1ヶ月に一度くらいの間隔で、SMS認証をしていた。

いい加減、煩わしくなったので、App Store Connect API 認証方式に切り替えた際に詰まったことが今日学んだこと

api_keyのパラメータとしてハッシュ渡しではない

以下の実装ではNGだった。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
lane :release do
  upload_to_testflight(
      api_key: {
          key_id: "D383SF739",
          issuer_id: "6053b7fe-68a8-4acb-89be-165aa6465141",
          key_filepath: "./AuthKey_D383SF739.p8",
          duration: 1200, # optional (maximum 1200)
          in_house: false # optional but may be required if using match/sigh
      },
      changelog: changelog
      )
end

具体的な実装方法

app_store_connect_api_keyを利用した上で、戻り値を利用して、オプションとして渡す方法にした。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
lane :release do
  api_key = app_store_connect_api_key(
    key_id: "D383SF739",
    issuer_id: "6053b7fe-68a8-4acb-89be-165aa6465141",
    key_filepath: "./AuthKey_D383SF739.p8",
    duration: 1200, # optional (maximum 1200)
    in_house: false # optional but may be required if using match/sigh
  )

  upload_to_testflight(
      api_key: api_key,
      changelog: changelog)
end

参考:Use return value and pass in as an option

ドキュメントを読んでいる限り、あらかじめJsonを作成してそれを読みこます方法でもいけそうではある。