Résolution rapide des problèmes - CodeArtifact

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Résolution rapide des problèmes

Les informations suivantes peuvent vous aider à résoudre les problèmes courants liés à Swift et CodeArtifact.

Je reçois une erreur 401 dans Xcode même après avoir configuré le Swift Package Manager

Problème : Lorsque vous essayez d'ajouter un package depuis votre CodeArtifact dépôt en tant que dépendance à votre projet Swift dans Xcode, vous obtenez une erreur 401 non autorisée même après avoir suivi les instructions de connexion à CodeArtifact Swift.

Correctifs possibles : Cela peut être dû à un problème lié à l'application macOS Keychain, dans laquelle vos CodeArtifact informations d'identification sont stockées. Pour résoudre ce problème, nous vous recommandons d'ouvrir l'application Keychain, de supprimer toutes les CodeArtifact entrées et de configurer à nouveau le Swift Package Manager avec votre CodeArtifact référentiel en suivant les instructions fournies dansConfigurez le gestionnaire de packages Swift avec CodeArtifact.

Xcode se bloque sur la machine CI en raison de l'invite du trousseau à saisir le mot de passe

Problème : Lorsque vous essayez d'extraire des packages Swift dans le CodeArtifact cadre d'une version Xcode sur un serveur d'intégration continue (CI), par exemple avec GitHub Actions, l'authentification CodeArtifact peut se bloquer et éventuellement échouer avec un message d'erreur similaire au suivant :

Failed to save credentials for \'https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com\' to keychain: status -60008

Correctifs possibles : Cela est dû au fait que les informations d'identification ne sont pas enregistrées dans le trousseau sur les machines CI et que Xcode ne prend en charge que les informations d'identification enregistrées dans le trousseau. Pour résoudre ce problème, nous vous recommandons de créer l'entrée du trousseau manuellement en suivant les étapes suivantes :

  1. Préparez le trousseau.

    KEYCHAIN_PASSWORD=$(openssl rand -base64 20) KEYCHAIN_NAME=login.keychain SYSTEM_KEYCHAIN=/Library/Keychains/System.keychain if [ -f $HOME/Library/Keychains/"${KEYCHAIN_NAME}"-db ]; then echo "Deleting old ${KEYCHAIN_NAME} keychain" security delete-keychain "${KEYCHAIN_NAME}" fi echo "Create Keychain" security create-keychain -p "${KEYCHAIN_PASSWORD}" "${KEYCHAIN_NAME}" EXISTING_KEYCHAINS=( $( security list-keychains | sed -e 's/ *//' | tr '\n' ' ' | tr -d '"') ) sudo security list-keychains -s "${KEYCHAIN_NAME}" "${EXISTING_KEYCHAINS[@]}" echo "New keychain search list :" security list-keychain echo "Configure keychain : remove lock timeout" security unlock-keychain -p "${KEYCHAIN_PASSWORD}" "${KEYCHAIN_NAME}" security set-keychain-settings "${KEYCHAIN_NAME}"
  2. Obtenez un jeton CodeArtifact d'authentification et le point de terminaison de votre référentiel.

    export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token \ --region us-west-2 \ --domain my_domain \ --domain-owner 111122223333 \ --query authorizationToken \ --output text` export CODEARTIFACT_REPO=`aws codeartifact get-repository-endpoint \ --region us-west-2 \ --domain my_domain \ --domain-owner 111122223333 \ --format swift \ --repository my_repo \ --query repositoryEndpoint \ --output text`
  3. Créez manuellement l'entrée Keychain.

    SERVER=$(echo $CODEARTIFACT_REPO | sed 's/https:\/\///g' | sed 's/.com.*$/.com/g') AUTHORIZATION=(-T /usr/bin/security -T /usr/bin/codesign -T /usr/bin/xcodebuild -T /usr/bin/swift \ -T /Applications/Xcode-15.2.app/Contents/Developer/usr/bin/xcodebuild) security delete-internet-password -a token -s $SERVER -r htps "${KEYCHAIN_NAME}" security add-internet-password -a token \ -s $SERVER \ -w $CODEARTIFACT_AUTH_TOKEN \ -r htps \ -U \ "${AUTHORIZATION[@]}" \ "${KEYCHAIN_NAME}" security set-internet-password-partition-list \ -a token \ -s $SERVER \ -S "com.apple.swift-package,com.apple.security,com.apple.dt.Xcode,apple-tool:,apple:,codesign" \ -k "${KEYCHAIN_PASSWORD}" "${KEYCHAIN_NAME}" security find-internet-password "${KEYCHAIN_NAME}"

Pour plus d'informations sur cette erreur et la solution, consultez https://github.com/apple/ swift-package-manager /issues/7236.