Entrega continua para iOS usando Codemagic
Prerrequisitos
Antes de continuar con el tutorial…
- Membresía del programa de desarrollador de iOS.
- Deseo de leer 😆…
Importante sobre el precio
El servicio es ‘gratuito’ hasta 500 minutos de macOS M1 / mes, dependiendo de la máquina elegida.
Vamos a usar una máquina macOS M1, puedes ver en la captura su precio y límites (precios a la fecha de creación del tutorial, podrían sufrir cambios en el futuro)
🔴 Una vez advertidos de requisitos y precios, si te parece, continuamos…
📣 ¡En el post asumimos que tenemos la app creada en iTunes connect, tenemos los certificados del ecosistema de Apple, todo será configurado por Codemagic!
Empecemos 🤿
Pasos a seguir en el post
- Usando la API de App Store Connect con Codemagic
- Requisitos
- Creando una clave de API de App Store Connect
- Usando una clave de API de App Store Connect
- Copiar archivos de Fastline
- Configurar Codemagic
1. Usando la API de App Store Connect con Codemagic
A partir de febrero de 2021, se requiere autenticación de dos factores o verificación de dos pasos para que todos los usuarios inicien sesión en App Store Connect. Esta capa adicional de seguridad para tu Apple ID ayuda a asegurar que seas la única persona que pueda acceder a tu cuenta.
De Apple Support
Comenzar con match requiere que revoques tus certificados existentes. Pero no te preocupes, tendrás el nuevo directamente.
Requisitos
Para poder usar la API de App Store Connect, Codemagic necesita tres cosas.
- ID del Emisor.
- ID de la Clave.
- Archivo de clave o contenido de la clave.
Creando una clave de API de App Store Connect
Para generar claves, debes tener permiso de Administrador en App Store Connect. Si no tienes ese permiso, puedes dirigir a la persona relevante a este artículo y seguir las siguientes instrucciones.
-
— Inicia sesión en App Store Connect.
-
— Selecciona Usuarios y Acceso.
- — Selecciona la pestaña Claves API.
- — Haz clic en Generar Clave API o el botón Agregar (+).
- — Ingresa el nombre para la clave y selecciona un nivel de acceso. Recomendamos elegir derechos de acceso
App Manager
, lee más sobre los permisos de roles del Programa de Desarrollador de Apple aquí
- — Haz clic en Generar.
El acceso de una clave API no puede limitarse a aplicaciones específicas.
El nombre de la nueva clave, ID de clave, un enlace de descarga y otra información aparecen en la página.
Obtén las tres informaciones necesarias aquí:
<1> ID del Emisor.
<2> ID de la Clave.
<3> Haz clic en “Descargar Clave API” para descargar tu clave privada de API. El enlace de descarga aparece solo si la clave privada aún no se ha descargado. Apple no guarda una copia de la clave privada. Por lo tanto, solo puedes descargarla una vez.
🔴 Almacena tu clave privada en un lugar seguro. Nunca debes compartir tus claves, almacenar claves en un repositorio de código o incluir claves en código del lado del cliente.
Agregando la clave API de App Store Connect a Codemagic
-
Abre la configuración de tu equipo en Codemagic,
Selecciona las identidades de firma de código
Y sube el certificado
-
Haz clic en el botón Agregar clave.
-
Ingresa el
Nombre de la clave de App Store Connect
. Este es un nombre legible para humanos que se utilizará para referirse a la clave más adelante en la configuración de la aplicación. -
Ingresa los valores de
ID del emisor
yID de la clave
. -
Haz clic en Elegir un archivo .p8 o arrastra el archivo para cargar la clave API de App Store Connect descargada anteriormente.
-
Haz clic en Guardar.
¡Ahora podemos gestionar Codemagic con la clave API de App Store Connect!
2. Crear certificados y perfiles de aprovisionamiento
Certificados
Abre XCode y ve a Preferencias > Cuentas > Apple ID > Equipos y selecciona tu equipo.
Haz clic en Gestionar certificados > + y selecciona Apple Distribution.
Entonces podrás crear un nuevo certificado.
Luego necesitas ir al llavero para descargar el certificado como archivo .p12
.
Para hacerlo, debes ir al llavero, cambiar al llavero inicio y luego a la pestaña Mis Certificados.
Entonces puedes seleccionar el certificado que quieres descargar. (Busca por la fecha del certificado)
Y luego haz clic derecho en el certificado y selecciona Exportar.
Elige el formato de archivo Intercambio de Información Personal (.p12).
Eso descargará el certificado como un archivo .p12
.
Perfiles de aprovisionamiento
Abre Apple Developer y selecciona el equipo correcto.
Luego crea un nuevo perfil haciendo clic en +
Y selecciona App Store Connect.
Luego necesitas seleccionar la aplicación correcta, ten cuidado de no usar comodín ya que la firma fallará.
Selecciona el certificado correcto que creaste antes (busca por la fecha de vencimiento, debe ser el mismo día y mes que hoy) y haz clic en Continuar.
Finalmente ingresa el nombre del perfil y haz clic en Generar.
El nombre se utilizará para identificar el perfil en Codemagic.
Puedes descargar el perfil como un archivo .mobileprovision
.
Agregando el certificado de firma de código
Codemagic te permite cargar certificados de firma de código como archivos PKCS#12 que contienen tanto el certificado como la clave privada necesaria para usarlo. Al cargar, Codemagic te pedirá que proporciones la contraseña del certificado (si el certificado está protegido por contraseña) junto con un Nombre de referencia único, que luego se puede usar en la configuración de codemagic.yaml
para obtener el archivo específico.
- Cargar certificado
- Generar nuevo certificado
- Obtener del Portal de Desarrollador
- Abra la configuración de su equipo de Codemagic, vaya a codemagic.yaml settings > Code signing identities.
- Abra la pestaña iOS certificates.
- Suba el archivo del certificado haciendo clic en Choose a .p12 or .pem file o arrastrándolo al marco indicado.
- Ingrese la Certificate password y elija un Reference name.
- Haga clic en Add certificate
Agregando el perfil de aprovisionamiento
Codemagic le permite cargar un perfil de aprovisionamiento para usar en la aplicación o obtener un perfil desde el Portal de Desarrolladores de Apple.
El tipo de perfil, equipo, ID del paquete y fecha de vencimiento se muestran para cada perfil agregado a Code signing identities. Además, Codemagic le informará si hay un certificado de firma de código coincidente disponible en Code signing identities (una marca de verificación verde en el campo Certificate) o no.
3. Configurar Codemagic
Configurar secretos de Codemagic
¿Alguna vez te has preguntado de dónde vienen los valores de ENV
? Bueno, ya no es un secreto - viene del secreto de tu proyecto. 🤦
4. Configurar archivo de flujo de trabajo de Codemagic
Crea un archivo llamado codemagic.yml
en la raíz de tu proyecto y agrega lo siguiente.
workflows: ionic-capacitor-ios-workflow: name: Capacitor iOS Workflow max_build_duration: 120 instance_type: mac_mini_m1 integrations: app_store_connect: CodeMagic environment: ios_signing: distribution_type: app_store bundle_identifier: YOUR_BUNDLE_IDENTIFIER vars: XCODE_WORKSPACE: ios/App/App.xcworkspace XCODE_SCHEME: App APP_STORE_APP_ID: YOUR_APP_STORE_APP_ID node: v20.14.0 xcode: 15.4 cocoapods: default triggering: events: - tag tag_patterns: - pattern: '*' include: true scripts: - name: Install dependencies script: | npm install - name: Cocoapods installation script: | cd ios/App && pod install - name: Update dependencies and copy web assets to native project script: | npm run build npx cap sync ios - name: Set up code signing settings on Xcode project script: | xcode-project use-profiles - name: Increment build number script: | cd $CM_BUILD_DIR/ios/App LATEST_BUILD_NUMBER=$(app-store-connect get-latest-app-store-build-number "$APP_ID") agvtool new-version -all $(($LATEST_BUILD_NUMBER + 1)) - name: Build ipa for distribution script: | xcode-project build-ipa \ --workspace "$XCODE_WORKSPACE" \ --scheme "$XCODE_SCHEME" artifacts: - build/ios/ipa/*.ipa - /tmp/xcodebuild_logs/*.log - $HOME/Library/Developer/Xcode/DerivedData/**/Build/**/*.app - $HOME/Library/Developer/Xcode/DerivedData/**/Build/**/*.dSYM publishing: email: recipients: - YOUR_EMAIL notify: success: true # To not receive a notification when a build succeeds failure: false # To not receive a notification when a build fails app_store_connect: auth: integration # Configuration related to TestFlight (optional) # Note: This action is performed during post-processing. submit_to_testflight: true # Configuration related to App Store (optional) # Note: This action is performed during post-processing. submit_to_app_store: false
Este flujo de trabajo debe activarse manualmente o después de cada tag de GitHub, si necesitas automatizar el tag, consulta primero Automatic build and release with GitHub actions.
Luego este flujo de trabajo extraerá tus dependencias NodeJS, las instalará y construirá tu aplicación JavaScript.
Cada vez que envíes un nuevo tag, se construirá un release en TestFlight.
Tu App no necesita usar Ionic, solo la base de Capacitor es obligatoria, puede tener módulos antiguos de Cordova, pero se deberían preferir los plugins de Capacitor JS.
5. Activar flujo de trabajo
Activar el flujo de trabajo
Envía los nuevos commits a la rama main
o developement
para activar el flujo de trabajo.
Después de unos minutos, la compilación debería estar disponible en tu panel de App Store Connect.
Iniciar manualmente
Puedes iniciar el flujo de trabajo manualmente.
Primero selecciona la aplicación que deseas compilar, luego haz clic en Start new build.
Luego selecciona la rama que deseas compilar.
Y haz clic en Start new build.
Luego ve a la lista de compilaciones
Y haz clic en la compilación para ver el resultado.
Se puede desplegar desde máquina local
Sí, puedes, y es muy sencillo.
Puedes usar Xcode para compilar y firmar tu aplicación, como siempre.
Gracias
Este blog está basado en los siguientes artículos: