Skip to main content
O Devin pode arquivar um app iOS, assiná-lo, importá-lo para o TestFlight e adicionar o build a um beta group. Ele executa o 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:
  1. Configurar seu app no App Store Connect.
  2. Criar uma chave de API do App Store Connect.
  3. Adicionar a chave e seu Team ID ao Devin como segredos.
  4. 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

Execute estas etapas no portal do Apple Developer e no App Store Connect. O Devin não pode fazê-las por você: a maioria exige um Account Holder ou Admin, e algumas precisam de autenticação de dois fatores na Apple Account de uma pessoa.
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

O Devin se autentica com uma chave de API do App Store Connect, e não com uma Apple Account. A chave não exige autenticação de dois fatores.
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.
Qualquer pessoa com o arquivo .p8 pode importar builds e gerenciar o TestFlight de todos os apps da sua equipe. Armazene-o apenas nos segredos do Devin e nunca faça commit dele em um repositório.

Adicione segredos ao Devin

Adicione os seguintes valores como segredos brutos na página de Secrets: Para copiar a chave privada em um Mac, execute:
Escolha um escopo para os segredos:
  • 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.
Os segredos só ficam disponíveis em sessões iniciadas após a sua adição. Para saber mais sobre escopos, consulte Segredos.

Permitir acesso à rede

A VM macOS do Devin precisa acessar os servidores da Apple para assinar e importar builds. Se a sua organização usa uma política de rede restritiva, adicione 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

Inicie uma sessão no macOS e peça ao Devin para importar um build:
O Devin usa os segredos para fazer o seguinte:
  1. Escrever ASC_PRIVATE_KEY em ~/.appstoreconnect/private_keys/AuthKey_$ASC_KEY_ID.p8 com permissões 0600.
  2. Verificar o número do build mais recente com a API do App Store Connect e escolher um número maior.
  3. Arquivar o app com xcodebuild archive.
  4. Assinar e importar o build com xcodebuild -exportArchive.
  5. Aguardar o fim do processamento e então adicionar o build ao beta group com a API do App Store Connect.
A etapa de exportação usa um plist de opções de exportação com destination definido como upload:
E estes comandos:
-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

Para não repetir as instruções em todo prompt, adicione-as à seção 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.