Saltar al contenido principal
CI/CD

Automatic Capacitor IOS build with Codemagic

Cómo configurar una pipeline de CI/CD para tu aplicación IOS Ionic utilizando Codemagic en 5 minutos (2024)

Martin Donadieu

Martin Donadieu

Marketing de Contenido

Construcción automática de Capacitor IOS con Codemagic

Distribución Continua para iOS utilizando Codemagic

Requisitos previos

Antes de continuar con el tutorial…

  • Membresía del programa de desarrolladores de iOS.
  • Deseo de leer 😆…

Importante sobre el precio

Precio de la acción de Codemagic

https://codemagic.io/pricing/

El servicio es ‘gratuito hasta 500 minutos mensuales en macOS M1, dependiendo de la máquina elegida.
Vamos a utilizar un macOS M1 máquina, puedes ver en la captura su precio y límites (precios a la creación del tutorial, pueden cambiar en el futuro)

🔴 Una vez advertidos de los requisitos y precios, si te gusta, continuamos…

📣 En el post asumimos que tenemos la aplicación creada en iTunes Connect, sí tenemos las certificaciones del ecosistema de Apple, todo estará configurado por Codemagic!

¡Vamos a sumergirnos!

Pasos a seguir en el post

  1. Usando App Store Connect API con Codemagic
  2. Requisitos
  3. Crear una llave de App Store Connect API
  4. Usando una clave de App Store Connect API
  5. Copiar archivos de Fastlane
  6. Configurar Codemagic

1. Usando App Store Connect API con Codemagic

A partir de febrero de 2021, se requiere autenticación en dos factores o verificación en dos pasos para todos los usuarios para iniciar sesión en App Store Connect. Esta capa adicional de seguridad para su ID de Apple ayuda a asegurarse de que solo usted puede acceder a su cuenta.
Desde Soporte de Apple

Para empezar con match, debe revocar sus certificados existentes. Pero no se preocupe, tendrá el nuevo directamente.

Requisitos

Para poder usar App Store Connect API, Codemagic necesita tres cosas.

  1. Identificador del emisor.
  2. Identificador de la clave.
  3. Archivo de clave o contenido de la clave.

Crear una clave de App Store Connect API

Para generar claves, debe tener permiso de Administrador en App Store Connect. Si no tiene ese permiso, puede dirigir a la persona relevante a este artículo y seguir las instrucciones siguientes.

1 — Iniciar sesión en App Store Connect.

2 — Seleccionar Usuarios y Acceso.

Acceso del usuario de App Store Connect

3 — Seleccionar la pestaña de claves API.

Claves de App Store Connect API

4 — Haz clic en Generar llave API o en el botón de agregar (+).

Las llaves de App Store Connect API crean

5 — Ingresa el nombre de la llave y selecciona un nivel de acceso. Se recomienda elegir App Manager derechos de acceso, lee más sobre los permisos del rol del programa de desarrollador de Apple aquí El nombre de la llave de App Store Connect __CAPGO_KEEP_0__

App Store Connect API keys create name

La llave __CAPGO_KEEP_0__ de un acceso no puede limitarse a aplicaciones específicas.

An API key’s access cannot be limited to specific apps.

Descargar llaves de App Store Connect

Obtén aquí toda la información necesaria:
1. ID de la incidencia.

2. ID de la llave.
4 — Click Generate __CAPGO_KEEP_0__ Key or the Add (+) button.
Haga clic en <3> "Descargar API Clave" para descargar tu API clave privada. El enlace de descarga aparece solo si la clave privada no se ha descargado aún. 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 code repositorio o incluir claves en el lado del cliente code.

Agregar la clave API de App Store Connect a Codemagic

  1. Abra la configuración de equipo de Codemagic Seleccionar integraciones de equipo Abra equipo Seleccionar identidades de firma code Seleccionar identidades de firma code Y subir el certificado Subir el certificado

  2. Haga clic en Agregar clave botón.

  3. Ingrese el App Store Connect API key nameEste es un nombre legible para humanos para la clave que se utilizará para referirse a la clave más tarde en las configuraciones de la aplicación.

  4. Ingrese el Issuer ID y Key ID valores.

  5. Haga clic en Elija un archivo .p8 o arrastre el archivo para subir la clave App Store Connect API descargada anteriormente.

  6. Haga clic Guardar.

Ahora podemos gestionar Codemagic con la clave App Store Connect API, ¡genial!

2. Crea certificados y perfiles de provisión

Certificados

Abre XCode y ve a Configuración > Cuentas > Apple ID > Equipos y selecciona tu equipo.

Code identidades de firma

Haz clic en Administra certificados > + y selecciona Distribución de Apple.

Distribución de Apple

Luego puedes crear un nuevo certificado.

Luego debes ir a la llave de cadena para descargar el certificado como un .p12 archivo.

Para hacerlo, debes ir a la llave de cadena, cambiar a la llave de cadena de inicio de sesión y luego la pestaña Mis Certificados Mis Certificados Luego puedes seleccionar el certificado que deseas descargar. (Busca por la fecha del certificado).

Y luego haz clic derecho en el certificado y selecciona

Descargar

Seleccionar Exportar.

Elige el formato de archivo Intercambio de información personal (.p12).

Eso descargará el certificado como un .p12 archivo.

Perfiles de provisión

Abrir Desarrollador de Apple y selecciona el equipo correcto.

Luego crea un nuevo perfil, haciendo clic en +

Crear un nuevo perfil

Y selecciona App Store Connect.

Seleccione App Store Connect

Luego debes seleccionar la aplicación correcta, ten cuidado, ya que si usas un wildcard el proceso de firma fallará.

Seleccione la aplicación correcta

Seleccione el certificado correcto que creaste antes (busca la fecha de vencimiento, debe ser el mismo día y mes que hoy) y haga clic en Continuar.

Seleccione el certificado correcto

Finalmente ingrese el nombre del perfil y haga clic en Generar.

El nombre se utilizará para identificar el perfil en Codemagic.

Generar el perfil

Puede descargar el perfil como .mobileprovision archivo.

Descargar el perfil

Agregar el certificado de firma Code

Codemagic te permite subir certificados de firma code como archivos PKCS#12 que contienen tanto el certificado como la clave privada, necesarias para utilizarlo. Al subir, Codemagic te pedirá que proporciones la contraseña del certificado (si está protegido con contraseña) junto con un nombre único Nombre de referencia, que luego se puede utilizar en la codemagic.yaml configuración para obtener el archivo específico.

  • Subir certificado
  • Generar nuevo certificado
  • Obtener desde el Portal de Desarrolladores
  1. Abre tus configuraciones de equipo de Codemagic, ve a configuraciones de codemagic.yaml > Code identidades de firma protegidas.
  2. Abrir certificados de iOS pestaña.
  3. Subir el archivo de certificado haciendo clic en Elegir un archivo .p12 o .pem o arrastrarlo y soltarlo en el marco indicado.
  4. Ingrese el Contraseña del certificado y elija un Nombre de referencia.
  5. Hacer clic Agregar certificado

Agregar el perfil de provisión

Codemagic te permite subir un perfil de provisión para utilizarlo en la aplicación o para recuperar un perfil desde el Portal del Desarrollador de Apple.

El tipo de perfil, equipo, identificador de paquete y fecha de expiración se muestran para cada perfil agregado a las identidades de firma de Code. Además, Codemagic te informará si está disponible un certificado de firma de code en las identidades de firma de Code (un marcador de verificación verde en el campo) o no. 3. Configurar Codemagic Configurar secretos de Codemagic

¿Te has preguntado de dónde vienen los valores de los?

Pues ya no es un secreto – provienen de la secret de tu proyecto.

4. Configurar archivo de flujo de trabajo de Codemagic ENV Crear un archivo denominado

Agregar certificado

Agregar el perfil de provisión codemagic.yml en el corazón 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

Esta flujo de trabajo debería ser desencadenado manualmente o después de cada GitHub etiqueta, si necesitas automatizar la etiqueta, por favor, consulta Publicación automática y de lanzamiento con GitHub acciones primero

Luego, este flujo de trabajo extraerá tus dependencias NodeJS, las instalará y construirá tu aplicación de JavaScript.

Cada vez que envíes una nueva etiqueta, se construirá un lanzamiento en TestFlight.

Tu aplicación no necesita utilizar Ionic, solo es obligatorio tener la base de Capacitor, puede tener módulos de Cordova antiguos, pero se recomienda utilizar el plugin de JavaScript Capacitor

5. Desencadena el flujo de trabajo

Desencadena el flujo de trabajo

Envía los nuevos commits a la rama main o development para desencadenar el flujo de trabajo.

Comenzado con el commit

Después de unos minutos, el build debería estar disponible en tu panel de control de App Store Connect.

Panel de control de Testflight

Puedes iniciar el flujo de trabajo manualmente.

Primero selecciona la aplicación que deseas compilar, luego haz clic en

Nueva compilación Seleccionar aplicación.

Luego selecciona la rama que deseas compilar.

Seleccionar rama

Then select the branch you want to build.

Y haz clic en Iniciar nueva compilación.

Luego ve a la lista de compilaciones

Lista de compilaciones

Y haz clic en la compilación para ver el resultado.

Resultado de la compilación

Puedes desplegar desde la máquina local

Sí, puedes, y es sencillo.

Puedes usar Xcode para compilar y firmar tu aplicación, como siempre.

Gracias

Este blog se basa en los siguientes artículos:

Actualizaciones en vivo para aplicaciones Capacitor

Cuando haya un error en la capa web en vivo, envíe la corrección a través de Capgo en lugar de esperar días para la aprobación de la tienda de aplicaciones. Los usuarios reciben la actualización en segundo plano mientras que los cambios nativos siguen en el camino de revisión normal.

Empezar Ahora

Últimas noticias de nuestro Blog

Capgo le da las mejores pistas que necesita para crear una aplicación móvil verdaderamente profesional.