xcodebuild em uma VM macOS e se autentica com uma chave de API do App Store Connect que você armazena como segredos do Devin.
Antes que o Devin possa importar um build, você precisa:
- Configurar seu app no App Store Connect.
- Criar uma chave de API do App Store Connect.
- Adicionar a chave e seu Team ID ao Devin como segredos.
- Garantir que o Devin consiga acessar os servidores da Apple.
Importar para o TestFlight exige sessões no macOS. Se você usa um deployment Dedicated SaaS, entre em contato com seu account team para ativar VMs macOS.
Requisitos
Configure o App Store Connect
1
Aceite os contratos mais recentes
O Account Holder entra no App Store Connect e aceita os contratos pendentes em Business. As importações falham enquanto houver um contrato obrigatório pendente.
2
Registre o bundle ID
No portal do Apple Developer, acesse Certificates, Identifiers & Profiles → Identifiers e registre um App ID que corresponda ao bundle ID do target do seu app. Pule esta etapa se o identificador já existir.
3
Crie o registro do app
No App Store Connect, acesse Apps, clique em + e selecione New App. Escolha a plataforma, o nome, o idioma principal, o bundle ID da etapa anterior e um SKU. As importações para o TestFlight falham se não houver um registro de app para o bundle ID.
4
Crie um beta group
Abra o app, acesse TestFlight e crie um grupo:
- Internal testing: os testadores precisam ser usuários do seu time no App Store Connect. Os builds ficam disponíveis assim que o processamento termina.
- External testing: os testadores podem ser qualquer pessoa com um endereço de e-mail ou um link público. Antes, preencha as Test Information (descrição do app beta, e-mail para feedback e dados de contato para revisão). O primeiro build de cada versão passa pelo Beta App Review.
5
Responda à conformidade de exportação
Todo build precisa responder à pergunta de conformidade de exportação antes que os testadores possam instalá-lo. Para pular essa pergunta a cada build, defina
ITSAppUsesNonExemptEncryption no Info.plist do seu app. Use NO se o app usa apenas criptografia isenta, como HTTPS.Criar uma chave de API do App Store Connect
1
Ativar o acesso à API
No App Store Connect, acesse Users and Access → Integrations → App Store Connect API. Se o acesso à API ainda não estiver ativado, o Account Holder deve clicar em Request Access e aceitar os termos.
2
Gerar uma chave de equipe
Em Team Keys, clique em +. Informe um nome, como
Devin TestFlight, e selecione a função App Manager. É necessário ter a função Admin para gerar uma chave. Se o Xcode não conseguir criar um certificado de distribuição com uma chave App Manager, gere uma chave com a função Admin.3
Baixar a chave privada
Clique em Download ao lado da nova chave para salvar
AuthKey_<KEY_ID>.p8. A Apple permite baixar o arquivo apenas uma vez. Se você perdê-lo, revogue a chave e gere uma nova.4
Copiar o Issuer ID e o Key ID
O Issuer ID aparece acima da tabela de chaves. O Key ID fica na linha da chave.
5
Encontrar o seu Team ID
No portal do Apple Developer, acesse Membership details e copie o Team ID. É uma sequência de 10 caracteres, como
A1B2C3D4E5.Adicione segredos ao Devin
Para copiar a chave privada em um Mac, execute:
- Organization: todas as sessões da sua organização podem usar a chave. Use esse escopo quando o time publica builds com Devin.
- Personal: apenas as sessões que você iniciar podem usar a chave.
Permitir acesso à rede
api.appstoreconnect.apple.com e os demais hosts da Apple que o xcodebuild utiliza para assinatura e importação. Permitir *.apple.com cobre todos eles.
Um host bloqueado normalmente aparece como erro de autenticação, e não como erro de rede. Consulte Solução de problemas.
Importar um build
- Escrever
ASC_PRIVATE_KEYem~/.appstoreconnect/private_keys/AuthKey_$ASC_KEY_ID.p8com permissões0600. - Verificar o número do build mais recente com a API do App Store Connect e escolher um número maior.
- Arquivar o app com
xcodebuild archive. - Assinar e importar o build com
xcodebuild -exportArchive. - Aguardar o fim do processamento e então adicionar o build ao beta group com a API do App Store Connect.
destination definido como upload:
-allowProvisioningUpdates permite que o Xcode crie o certificado de distribuição e o provisioning profile com a chave de API, de modo que a VM não precisa ter os ativos de assinatura instalados.
Se o seu repositório já tiver um script de publicação de versão, como uma lane do fastlane ou um target do make, peça ao Devin para usá-lo. O fastlane aceita a mesma chave por meio de app_store_connect_api_key.
Salve as etapas no seu blueprint
knowledge do blueprint do seu repositório:
Solução de problemas
No Accounts with App Store Connect Access ou Failed to Use Accounts durante a exportação. Verifique primeiro o acesso à rede. Se a VM não conseguir alcançar os servidores da Apple, o xcodebuild reporta esse erro mesmo que a chave seja válida. Procure por ITunesConnectFoundationErrorDomain Code=-1003 nas linhas acima. Se a rede estiver funcionando, verifique se a chave tem a função App Manager.
No profiles for '<bundle ID>' were found. O bundle ID não está registrado para o team indicado em APPLE_TEAM_ID, ou não existe nenhum registro de app para ele no App Store Connect.
The provided entity includes an attribute with a value that has already been used. O número de build já foi usado para esta versão. Faça a importação novamente com um número de build maior.
O build é importado, mas os testadores não conseguem instalá-lo. Verifique o build em App Store Connect → TestFlight. Ele pode ainda estar em processamento, estar sem as informações de conformidade de exportação ou aguardando a Beta App Review.
O Xcode não consegue criar um certificado de distribuição. A função da chave não permite gerenciar certificados. Gere uma chave com a função Admin ou peça a um Admin que crie o certificado de distribuição no portal Apple Developer.
As variáveis de ambiente estão vazias na sessão. Os segredos só ficam disponíveis em sessões iniciadas depois que você os adiciona. Inicie uma nova sessão.
