Slide 1

Slide 1 text

© 2024 Wantedly, Inc. Cloud-managed certificates へ 移行した話 Mobile勉強会 Wantedly × チームラボ × Sansan #15 Jul. 23 2024 - 林達也

Slide 2

Slide 2 text

© 2024 Wantedly, Inc. 自己紹介 林達也 ウォンテッドリー株式会社 github swiftty x _swiftty wantedly tatsuya_hayashi_ar Swift Package Manager へ移行した話 ハーモナイザー - 性格診断

Slide 3

Slide 3 text

© 2024 Wantedly, Inc. 前提

Slide 4

Slide 4 text

© 2024 Wantedly, Inc. 前提 ● 今までは fastlane match で証明書を管理 ● 開発者証明書は個々人、 CI 用にそれぞれ持っている ● 開発時は Automatically manage signing を利用 チーム状況

Slide 5

Slide 5 text

© 2024 Wantedly, Inc. 前提 ● 毎年の証明書・プロビジョニングプロファイル更新作業におい て一部自動化できない手順が存在 ○ App Store Connect 上で手動で entitlements を更新したあとに改めてプロファイル をリポジトリに保存 更新作業

Slide 6

Slide 6 text

© 2024 Wantedly, Inc. 前提 ● 毎年の証明書・プロビジョニングプロファイル更新作業におい て一部自動化できない手順が存在 ○ App Store Connect 上で手動で entitlements を更新したあとに改めてプロファイル をリポジトリに保存 更新作業 → カイゼンしたい💪 

Slide 7

Slide 7 text

© 2024 Wantedly, Inc. ちなみにみなさん 証明書どう管理していますか? クラウド管理 or Xcode Cloud、手動、…

Slide 8

Slide 8 text

© 2024 Wantedly, Inc. Cloud-managed certificates とは

Slide 9

Slide 9 text

© 2024 Wantedly, Inc. Cloud-managed certificates とは Cloud-managed certificates(クラウド管理証明書) ● アプリ配布のための署名がクラウドで行われる ● 期限が近づいてきたら自動で更新される https://developer.apple.com/jp/help/account/create-certificates/cloud-managed-certificates/

Slide 10

Slide 10 text

© 2024 Wantedly, Inc. プロビジョニングプロファイルと 配布用証明書の管理が不要に👏

Slide 11

Slide 11 text

© 2024 Wantedly, Inc. 署名方法

Slide 12

Slide 12 text

© 2024 Wantedly, Inc. 署名方法 ● 準備 ○ Automatically manage signing を有効化 ○ App Store Connect API キーを発行 ● xcodebuild にオプションを追加 -allowProvisioningUpdates -authenticationKeyIssuerID -authenticationKeyID -authenticationKeyPath

Slide 13

Slide 13 text

© 2024 Wantedly, Inc. 移行の流れ

Slide 14

Slide 14 text

© 2024 Wantedly, Inc. 移行の流れ ● 社内配布をクラウド署名に変更 ● どの証明書が用いられたかを確認 ○ DistributionSummary.plist ○ *.ipa/*.app/*.mobileprovision ○ → 証明書が「Cloud Managed Apple Distribution」となっていること 適切な entitlements が反映されていること ● 問題ないことを確認してプロダクション配布にも適用 ● (各アプリごとに検証・適用)

Slide 15

Slide 15 text

© 2024 Wantedly, Inc. ハマったこと

Slide 16

Slide 16 text

© 2024 Wantedly, Inc. ipa 作成の流れ ビルド/アーカイブ ➜ エクスポート ➜

Slide 17

Slide 17 text

© 2024 Wantedly, Inc. クラウド証明書は配布(エクスポート)時に署名に利用されるもの そのためアーカイブ時の署名を無効( CODE_SIGNING_ALLOWED=NO )とすれば開発者証明書も不要 ipa 作成の流れ ビルド/アーカイブ ➜ エクスポート ➜

Slide 18

Slide 18 text

© 2024 Wantedly, Inc. クラウド証明書は配布(エクスポート)時に署名に利用されるもの そのためアーカイブ時の署名を無効( CODE_SIGNING_ALLOWED=NO )とすれば開発者証明書も不要 → entitlements が反映されない ※プッシュ通知や Associated domains の設定など ipa 作成の流れ ビルド/アーカイブ ➜ エクスポート ➜

Slide 19

Slide 19 text

© 2024 Wantedly, Inc. クラウド証明書は配布(エクスポート)時に署名に利用されるもの そのためアーカイブ時の署名を無効( CODE_SIGNING_ALLOWED=NO )とすれば開発者証明書も不要 → entitlements が反映されない ※プッシュ通知や Associated domains の設定など ipa 作成の流れ ビルド/アーカイブ ➜ エクスポート ➜ → 開発者証明書は必要 開発者証明書のみ fastlane match で管理することに  

Slide 20

Slide 20 text

© 2024 Wantedly, Inc. ipa 作成の流れ ビルド/アーカイブ ➜ エクスポート ➜ ※ Session Video の説明では部分署名と説明 https://developer.apple.com/videos/play/wwdc2021/10204/ 開発者証明書で署名 ※ クラウド証明書で署名

Slide 21

Slide 21 text

© 2024 Wantedly, Inc. まとめ

Slide 22

Slide 22 text

© 2024 Wantedly, Inc. まとめ ● クラウド管理になり配布証明書とプロビジョニング プロファイルの更新から開放 ○ ただし開発者証明書は 1 年ごとの更新は必要… ○ そのため開発者証明書のみ引き続き fastlane match で管理 ● まだベストな運用が定まっていないので懇親会で ぜひ情報交換しましょう 󰢧