Skip to main content
Tempo: 2–10 minutos. Requer: uma associação paga ao Apple Developer Program. 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 segredos: Para copiar a chave privada em um Mac, execute:
Escolha um escopo para os segredos:
  • organização: 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.
O Devin vincula os segredos aos comandos que precisam deles; eles não são exportados para todo shell, então os scripts devem ler a variável que o Devin vincula para eles. Segredos adicionados durante uma sessão em execução são utilizados pelos comandos seguintes. Para saber mais sobre escopos e injeção, 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 não são exportados para todos os shells. Peça ao Devin para vincular o segredo (por exemplo, ASC_KEY_ID) ao comando que precisa dele e verifique se o segredo existe na página de segredos com um escopo que a sessão possa usar.