Risoluzione dei problemi Swift - CodeArtifact

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risoluzione dei problemi Swift

Le seguenti informazioni potrebbero aiutarti a risolvere i problemi più comuni relativi a Swift e. CodeArtifact

Ricevo un errore 401 in Xcode anche dopo aver configurato Swift Package Manager

Problema: quando cerchi di aggiungere un pacchetto dal tuo CodeArtifact repository come dipendenza al tuo progetto Swift in Xcode, ricevi un errore 401 non autorizzato anche dopo aver seguito le istruzioni per connettere Swift a. CodeArtifact

Possibili correzioni: ciò può essere causato da un problema con l'applicazione macOS Keychain, in cui sono archiviate CodeArtifact le credenziali. Per risolvere questo problema, ti consigliamo di aprire l'applicazione Keychain ed eliminare tutte le CodeArtifact voci e di configurare nuovamente Swift Package Manager con il tuo CodeArtifact repository seguendo le istruzioni riportate in. Configura Swift Package Manager con CodeArtifact

Xcode si blocca sulla macchina CI a causa della richiesta di password del portachiavi

Problema: quando si tenta di estrarre pacchetti Swift da CodeArtifact una build Xcode su un server di integrazione continua (CI), ad esempio con GitHub Actions, l'autenticazione con CodeArtifact può bloccarsi e alla fine fallire con un messaggio di errore simile al seguente:

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

Possibili correzioni: ciò è causato dal fatto che le credenziali non vengono salvate nel portachiavi sulle macchine CI e Xcode supporta solo le credenziali salvate in Keychain. Per risolvere questo problema, consigliamo di creare manualmente la voce del portachiavi utilizzando i seguenti passaggi:

  1. Prepara il portachiavi.

    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. Ottieni un token di CodeArtifact autenticazione e l'endpoint del tuo repository.

    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. Crea manualmente la voce 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}"

Per ulteriori informazioni su questo errore e sulla soluzione, vedere https://github.com/apple/ swift-package-manager /issues/7236.