Authentification à deux facteurs avec Fastlane
Je publie mon application sur la distribution Firebase et lance Fastlane lors de l'utilisation de la machine CI. Im face à un problème avec le 2FA.
J'utilise Match pour récupérer mes certificats. C'est ce que j'ai sous "Appfile"
app_identifier "com.example.example" # the bundle
apple_id "[email protected]" # Your Apple
team_id "abcd..." # Developer Portal Team ID
ENV["FASTLANE_USER"] = "[email protected]"
ENV["MATCH_PASSWORD"] = ""
ENV["FASTLANE_PASSWORD"] = ""
ENV["FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD"] = ""
Voici l'erreur que je reçois:
L'authentification à deux facteurs (code à 6 chiffres) est activée pour le compte '[email protected]' Plus d'informations sur l'authentification à deux facteurs: https://support.apple.com/en-us/HT204915
Si vous l'exécutez dans une session non interactive (par exemple, serveur ou CI), consultez https://github.com/fastlane/fastlane/tree/master/spaceship#2-step-verification
(Entrez
smspour échapper à cette invite et sélectionnez un numéro de téléphone de confiance pour envoyer le code sous forme de message texte)(Vous pouvez également définir la variable d'environnement
SPACESHIP_2FA_SMS_DEFAULT_PHONE_NUMBERpour automatiser cela) (En savoir plus sur:https://github.com/fastlane/fastlane/blob/master/spaceship/docs/Authentication.md#auto-select-sms-via-spaceship_2fa_sms_default_phone_number)Veuillez saisir le code à 6 chiffres:
J'ai lu ce "https://docs.fastlane.tools/best-practices/continuous-integration/" mais sans chance. quelqu'un peut-il m'aider à résoudre ce problème?
Réponses
L'équipe Fastlane a fait un excellent travail ❤ dans les versions récentes (de 2.157.0 à 2.163.0 jusqu'à présent) pour soutenir l'utilisation d'une clé API pour App Store Connect API dans de nombreuses actions ( pilot, deliver, match, etc. - le statut de chaque outil est disponible ici ).
L'utilisation d'une clé API élimine le besoin de fournir un compte Apple pour authentifier et autoriser les actions Fastlane pour effectuer leurs opérations sur App Store Connect, ce qui signifie également que vous ne serez plus aux prises avec des problèmes à 2 facteurs sur votre machine CI ou que vous devrez manuellement régénérer une session via fastlane spaceauthlorsqu'elle devient invalide.
Depuis la page Clé d'API App Store Connect :
La génération d'une clé API vous permet de configurer, d'authentifier et d'utiliser un ou plusieurs services Apple pour cette clé. Les clés n'expirent pas, mais ne peuvent pas être modifiées pour accéder à plus de services une fois créées. Vous pouvez avoir un maximum de 50 clés actives à la fois
Il y a d'autres avantages à utiliser une clé API et c'est la solution recommandée comme expliqué dans la documentation de Fastlane :
fastlane a toujours utilisé des identifiants Apple avec nom d'utilisateur et mot de passe pour s'authentifier à l'aide d'une session Web basée sur des cookies. fastlane continuera à utiliser cette même session Web basée sur les cookies pour s'authentifier avec une version non officielle de l'API App Store Connect.
Cependant, il est recommandé d'utiliser l'authentification par clé API lorsque vous le pouvez. Les avantages comprennent:
- Aucun 2FA nécessaire
- Meilleure performance
- API documentée
- Fiabilité accrue
Je ne détaillerai pas ici les étapes de configuration et d'utilisation d'une clé API car elle est déjà bien expliquée dans la documentation mais voici les principales étapes:
- Créez une nouvelle clé API depuis l'App Store Connect (vous devez avoir le rôle "Titulaire de compte" pour en créer une),
- Stockez la clé et ses informations sur votre CI,
- Dans votre
Fastfile, appelez l' app_store_connect_api_keyaction avec les valeurs stockées dans 2. - Transmettez la valeur retournée par 3. comme
api_keyparamètre lorsque vous appelez une action, ou laissez l'action récupérer sa valeur par elle-même dans le contexte de voie (si elle le prend en charge).
Problème 2FA en raison d'une session invalide:
Devrait disparaître :)
Vous devez configurer une variable d'environnement 'FASTLANE_SESSION' = '--- \ n .... \ n' token.
Pour obtenir ce jeton, vous devez vous authentifier manuellement à l'aide de cette commande:
fastlane spaceauth -u VOTRE_APP_STORE_EMAIL
exemple fastlane spaceauth -u [email protected].
Vous devrez revalider toutes les 2-3 semaines (certains disent 30 jours) votre session. Le processus est un peu pénible en ce moment.