Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Solución de problemas de Swift
La siguiente información puede ayudarle a solucionar problemas comunes con Swift y CodeArtifact.
Recibo un error 401 en Xcode incluso después de configurar Swift Package Manager
Problema: cuando intenta añadir un paquete de su repositorio de CodeArtifact como una dependencia a su proyecto Swift en Xcode, recibe un error 401 no autorizado incluso después de haber seguido las instrucciones para conectar Swift a CodeArtifact.
Posibles soluciones: esto puede deberse a un problema con la aplicación MacOS Keychain, donde se almacenan las credenciales de CodeArtifact. Para solucionar este problema, le recomendamos abrir la aplicación Keychain y eliminar todas las entradas de CodeArtifact y volver a configurar Swift Package Manager con su repositorio de CodeArtifact siguiendo las instrucciones que se indican en Configurar Swift Package Manager con CodeArtifact.
Xcode se bloquea en la máquina CI debido a que el llavero pide la contraseña
Problema: cuando intenta extraer paquetes Swift de CodeArtifact como parte de una compilación de Xcode en un servidor de integración continua (CI), como GitHub Actions, la autenticación con CodeArtifact puede bloquearse y acabar fallando con un mensaje de error similar al siguiente:
Failed to save credentials for \'https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com\' to keychain: status -60008
Soluciones posibles: el problema se debe a que las credenciales no se guardan en el llavero de las máquinas CI y Xcode solo admite las credenciales guardadas en Keychain. Para solucionar este problema, recomendamos crear la entrada del llavero manualmente siguiendo estos pasos:
-
Prepare el llavero.
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}" -
Obtenga un token de autenticación de CodeArtifact y el punto de conexión del repositorio.
export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token \ --regionus-west-2\ --domainmy_domain\ --domain-owner111122223333\ --query authorizationToken \ --output text` export CODEARTIFACT_REPO=`aws codeartifact get-repository-endpoint \ --regionus-west-2\ --domainmy_domain\ --domain-owner111122223333\ --format swift \ --repositorymy_repo\ --query repositoryEndpoint \ --output text` -
Cree manualmente la entrada de 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}"
Si quiere obtener más información sobre este error y la solución, consulte https://github.com/apple/swift-package-manager/issues/7236