Solução de problemas do Swift - CodeArtifact

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Solução de problemas do Swift

As informações a seguir podem ajudá-lo a solucionar problemas comuns com o Swift e. CodeArtifact

O erro 401 é exibido no Xcode mesmo depois de configurar o Swift Package Manager

Problema: Quando você está tentando adicionar um pacote do seu CodeArtifact repositório como uma dependência ao seu projeto Swift no Xcode, você está recebendo um erro 401 não autorizado mesmo depois de seguir as instruções para conectar o Swift a. CodeArtifact

Possíveis correções: isso pode ser causado por um problema com o aplicativo macOS Keychain, onde suas CodeArtifact credenciais são armazenadas. Para corrigir isso, recomendamos abrir o aplicativo Keychain, excluir todas as CodeArtifact entradas e configurar o Swift Package Manager com seu CodeArtifact repositório novamente seguindo as instruções em. Configure o Swift Package Manager com CodeArtifact

O Xcode trava na máquina de CI devido à solicitação de senha do Keychain

Problema: quando você está tentando extrair pacotes do Swift CodeArtifact como parte de uma compilação do Xcode em um servidor de integração contínua (CI), como com o GitHub Actions, a autenticação com CodeArtifact pode travar e, eventualmente, falhar com uma mensagem de erro semelhante à seguinte:

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

Possíveis correções: isso ocorre porque as credenciais não são salvas no Keychain em máquinas de CI e o Xcode é compatível somente com as credenciais salvas no Keychain. Para corrigir isso, recomendamos criar a entrada do Keychain manualmente, usando as seguintes etapas:

  1. Prepare o Keychain.

    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. Obtenha um token de CodeArtifact autenticação e o endpoint do seu repositório.

    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. Crie manualmente a entrada do 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}"

Para obter mais informações sobre esse erro e a solução, consulte https://github.com/apple/swift-package-manager/issues/7236.