Skip to main content
Devin puede archivar una app de iOS, firmarla, subirla a TestFlight y agregar la compilación a un grupo beta. Ejecuta xcodebuild en una VM de macOS y se autentica con una clave de API de App Store Connect que guardas como secretos de Devin. Antes de que Devin pueda subir una compilación, debes:
  1. Configurar tu app en App Store Connect.
  2. Crear una clave de API de App Store Connect.
  3. Agregar la clave y tu Team ID a Devin como secretos.
  4. Asegurarte de que Devin pueda acceder a los servidores de Apple.
Subir a TestFlight requiere sesiones de macOS. Si usas un despliegue de SaaS dedicado, contacta a tu account team para habilitar las VM de macOS.

Requisitos

Configurar App Store Connect

Realiza estos pasos en el portal de Apple Developer y en App Store Connect. Devin no puede hacerlos por ti: la mayoría requiere un Account Holder o Admin, y algunos necesitan autenticación de dos factores en la Apple Account de una persona.
1

Aceptar los acuerdos más recientes

El Account Holder inicia sesión en App Store Connect y acepta los acuerdos pendientes en Business. Las subidas fallan mientras quede algún acuerdo obligatorio pendiente.
2

Registrar el bundle ID

En el portal de Apple Developer, ve a Certificates, Identifiers & Profiles → Identifiers y registra un App ID que coincida con el bundle ID del target de tu app. Omite este paso si el identificador ya existe.
3

Crear el registro de la app

En App Store Connect, ve a Apps, haz clic en + y selecciona New App. Elige la plataforma, el nombre, el idioma principal, el bundle ID del paso anterior y un SKU. Las subidas a TestFlight fallan si no existe un registro de app para ese bundle ID.
4

Crear un grupo beta

Abre la app, ve a TestFlight y crea un grupo:
  • Internal testing: los testers deben ser usuarios de tu equipo de App Store Connect. Las compilaciones están disponibles en cuanto termina el procesamiento.
  • External testing: los testers pueden ser cualquier persona con una dirección de correo electrónico o un enlace público. Primero completa Test Information (descripción de la app beta, correo para feedback y datos de contacto para la revisión). La primera compilación de cada versión pasa por Beta App Review.
5

Responder al cumplimiento de exportación

Cada compilación debe responder a la pregunta de cumplimiento de exportación antes de que los testers puedan instalarla. Para omitir esa pregunta en cada compilación, define ITSAppUsesNonExemptEncryption en el Info.plist de tu app. Establécelo en NO si la app solo usa cifrado exento, como HTTPS.

Crear una clave de API de App Store Connect

Devin se autentica con una clave de API de App Store Connect, no con una Apple Account. La clave no requiere autenticación de dos factores.
1

Habilitar el acceso a la API

En App Store Connect, ve a Users and Access → Integrations → App Store Connect API. Si el acceso a la API aún no está habilitado, el Account Holder debe hacer clic en Request Access y aceptar los términos.
2

Generar una clave de equipo

En Team Keys, haz clic en +. Escribe un nombre, como Devin TestFlight, y selecciona el rol App Manager. Necesitas el rol Admin para generar una clave. Si Xcode no puede crear un certificado de distribución con una clave de App Manager, genera una clave con el rol Admin.
3

Descargar la clave privada

Haz clic en Download junto a la nueva clave para guardar AuthKey_<KEY_ID>.p8. Apple solo permite descargar el archivo una vez. Si lo pierdes, revoca la clave y genera una nueva.
4

Copiar el Issuer ID y el Key ID

El Issuer ID aparece encima de la tabla de claves. El Key ID está en la fila de la clave.
5

Encontrar tu Team ID

En el portal de Apple Developer, ve a Membership details y copia el Team ID. Es una cadena de 10 caracteres, como A1B2C3D4E5.
Cualquier persona que tenga el archivo .p8 puede subir compilaciones y gestionar TestFlight de todas las apps de tu equipo. Guárdalo únicamente en los secretos de Devin y no lo confirmes en un repositorio.

Agregar secretos a Devin

Agrega los siguientes valores como secretos sin procesar en la Secrets page: Para copiar la clave privada en una Mac, ejecuta:
Elige un ámbito para los secretos:
  • Organization: cualquier sesión de tu organización puede usar la clave. Usa este ámbito cuando el equipo publique compilaciones con Devin.
  • Personal: solo pueden usar la clave las sesiones que tú inicies.
Los secretos solo están disponibles en las sesiones iniciadas después de agregarlos. Para más información sobre los ámbitos, consulta Secretos.

Permitir acceso a la red

La VM de macOS de Devin necesita conectarse a los servidores de Apple para firmar y subir compilaciones. Si tu organización usa una política de red restringida, agrega api.appstoreconnect.apple.com y los demás hosts de Apple que xcodebuild usa para firmar y subir. Permitir *.apple.com los cubre todos. Un host bloqueado suele aparecer como un error de autenticación, no como un error de red. Consulta Solución de problemas.

Subir una compilación

Inicia una sesión de macOS y pídele a Devin que suba una compilación:
Devin usa los secretos para lo siguiente:
  1. Escribir ASC_PRIVATE_KEY en ~/.appstoreconnect/private_keys/AuthKey_$ASC_KEY_ID.p8 con permisos 0600.
  2. Consultar el número de compilación más reciente con la API de App Store Connect y elegir uno superior.
  3. Archivar la app con xcodebuild archive.
  4. Firmar y subir la compilación con xcodebuild -exportArchive.
  5. Esperar a que termine el procesamiento y luego agregar la compilación al grupo beta con la API de App Store Connect.
El paso de exportación usa un plist de opciones de exportación con destination configurado como upload:
Y estos comandos:
-allowProvisioningUpdates permite que Xcode cree el certificado de distribución y el perfil de aprovisionamiento con la clave de API, de modo que la VM no necesita tener instalados los recursos de firma. Si tu repositorio ya cuenta con un script de publicación, como un lane de fastlane o un target de make, indícale a Devin que lo use. fastlane acepta esa misma clave mediante app_store_connect_api_key.

Guarda los pasos en tu blueprint

Para evitar repetir las instrucciones en cada prompt, agrégalas a la sección knowledge del blueprint de tu repositorio:

Solución de problemas

No Accounts with App Store Connect Access o Failed to Use Accounts durante la exportación. Revisa primero el acceso a la red. Si la VM no puede comunicarse con los servidores de Apple, xcodebuild informa este error incluso cuando la clave es válida. Busca ITunesConnectFoundationErrorDomain Code=-1003 en las líneas anteriores. Si la red funciona correctamente, verifica que la clave tenga el rol App Manager. No profiles for '<bundle ID>' were found. El bundle ID no está registrado para el team indicado en APPLE_TEAM_ID, o no existe un registro de app asociado en App Store Connect. The provided entity includes an attribute with a value that has already been used. El número de compilación ya se usó para esta versión. Vuelve a subirla con un número de compilación mayor. La compilación se sube, pero los testers no pueden instalarla. Revisa la compilación en App Store Connect → TestFlight. Puede que aún esté procesándose, que le falte la información de cumplimiento de exportación o que esté esperando la Beta App Review. Xcode no puede crear un certificado de distribución. El rol de la clave no permite gestionar certificados. Genera una clave con el rol Admin o pide a un Admin que cree el certificado de distribución en el portal de Apple Developer. Las environment variables están vacías en la sesión. Los secretos solo están disponibles en las sesiones que se inician después de agregarlos. Inicia una nueva sesión.