in

Agregue macOS a sus procesos de integración continua con AWS CodeBuild | Amazon Web Services

A partir de hoy, puedes crear aplicaciones en macOS con AWS CodeBuild. Ahora puede crear artefactos en servidores administrados. Manzana M2 máquinas que funcionan en macOS 14 SonomaAWS CodeBuild es un servicio de integración continua totalmente administrado que compila código fuente, ejecuta pruebas y produce paquetes de software listos para implementar.

Crear, probar, firmar y distribuir aplicaciones para sistemas Apple (iOS, Sistema operativo iPad, Sistema operativo WatchOS, Sistema operativo de televisióny macOS) requiere el uso de Código Xque se ejecuta exclusivamente en macOS. Cuando crea para sistemas Apple en la nube de AWS, es muy probable que haya configurado su canalización de integración continua e implementación continua (CI/CD) para que se ejecute en instancias Mac de Amazon Elastic Cloud Compute (Amazon EC2).

Desde que lanzamos Amazon EC2 Mac en 2020, he pasado Una cantidad significativa de tiempo con nuestros clientes en diversas industrias y geografías, ayudándolos a configurar y optimizar sus canales de venta en macOS. En su forma más simple, el canal de venta de un cliente podría verse como el siguiente diagrama.

Canal de compilación de iOS en EC2 Mac

El pipeline comienza cuando hay una nueva confirmación o solicitud de extracción en el repositorio de código fuente. El agente de repositorio instalado en la máquina activa varios scripts para configurar el entorno, compilar y probar la aplicación y, finalmente, implementarla en Conectar a la App Store.

Amazon EC2 Mac simplifica drásticamente la gestión y automatización de las máquinas macOS. Como me gusta describirlo, una instancia EC2 Mac tiene todas las características que me encantan de Amazon EC2 (volúmenes de Amazon Elastic Block Store (Amazon EBS), instantáneas, nubes privadas virtuales (VPC), grupos de seguridad y más) aplicadas a las Mac mini que ejecutan macOS en la nube.

Sin embargo, los clientes se enfrentan a dos desafíos. El primero es preparar la imagen de máquina de Amazon (AMI) con todas las herramientas necesarias para la compilación. Un entorno de compilación mínimo requiere Xcode, pero es muy común instalar Carril rápido (y Rubí), así como otras herramientas y bibliotecas de desarrollo o compilación. La mayoría de las organizaciones requieren múltiples entornos de compilación para múltiples combinaciones de versiones de macOS y Xcode.

El segundo desafío es escalar su flota de compilaciones según la cantidad y la duración de las compilaciones. Las organizaciones grandes suelen tener cientos o miles de compilaciones por día, lo que requiere docenas de máquinas de compilación. Escalar dentro y fuera de esa flota ayuda a ahorrar costos. Las instancias de Mac de EC2 están reservadas para su uso exclusivo. Una instancia se asigna a un host exclusivo. Escalar una flota de host exclusivos requiere una configuración específica.

Para abordar estos desafíos y simplificar la configuración y administración de sus máquinas de compilación macOS, hoy presentamos CodeBuild para macOS.

CodeBuild para macOS se basa en la flota de capacidad reservada que se introdujo recientemente, que contiene instancias impulsadas por Amazon EC2 que son mantenidas por CodeBuild. Con las flotas de capacidad reservada, configura un conjunto de instancias dedicadas para su entorno de compilación. Estas máquinas permanecen inactivas, listas para procesar compilaciones o pruebas de inmediato, lo que reduce la duración de las compilaciones. Con las flotas de capacidad reservada, sus máquinas siempre están en funcionamiento y seguirán generando costos mientras estén aprovisionadas.

CodeBuild proporciona una imagen de disco estándar (AMI) para ejecutar sus compilaciones. Contiene versiones preinstaladas de Xcode, Fastlane, Ruby, Python, Node.js y otras herramientas populares para un entorno de desarrollo y compilación. La lista completa de herramientas instaladas está disponible en la documentación. Con el tiempo, proporcionaremos imágenes de disco adicionales con versiones actualizadas de estas herramientas. También puede traer su propia imagen de disco personalizada si lo desea.

Además, CodeBuild facilita la configuración del escalado automático. Usted nos indica cuánta capacidad desea y nosotros nos encargamos de todo desde allí.

Veamos CodeBuild para macOS en acción
Para mostrarte cómo funciona, creo una canalización CI/CD para mi proyecto favorito: comenzar con Amplificación de AWS en iOS. Este tutorial y el código fuente que lo acompaña explican cómo crear una aplicación iOS sencilla con un backend basado en la nube. La aplicación utiliza una API GraphQL (AWS AppSync), una base de datos NoSQL (Amazon DynamoDB), un almacenamiento basado en archivos (Amazon Simple Storage Service (Amazon S3)) y autenticación de usuarios (Amazon Cognito). AWS Amplify para Swift es la pieza que une todos estos servicios.

El El tutorial y el código fuente de la aplicación están disponibles en un repositorio Git. Incluye Scripts para automatizar la creación, prueba e implementación de la aplicación..

La configuración de una nueva canalización de CI/CD con CodeBuild para macOS implica los siguientes pasos de alto nivel:

  1. Crear el proyecto de compilación.
  2. Crear una flota dedicada de máquinas.
  3. Configure uno o más activadores de compilación.
  4. Agregue un archivo de definición de canalización (buildspec.yaml) al proyecto.

Para comenzar, abro la consola de administración de AWS, selecciono CodeBuild y selecciono Crear proyecto.

código de compilación mac - 1

Entro en una Nombre del proyecto y configurar la conexión a la Fuente Repositorio de código. En este ejemplo, utilizo GitHub. CodeBuild también es compatible con GitLab y BitBucket. La documentación incluye una lista actualizada de los repositorios de código fuente compatibles.

código de compilación mac - 2

Para el Modelo de aprovisionamientoyo selecciono Capacidad reservadaEste es el único modelo en el que están disponibles las instancias de Amazon EC2 para Mac. Todavía no tengo una flota definida, así que decido crear una en el vuelo mientras creo el proyecto de compilación. Selecciono Crear flota.

código de compilación mac - 3

En el Calcular configuración de flota página, entro en una Calcular el nombre de la flota y seleccione macOS como sistema operativo. CalcularSelecciono la cantidad de memoria y la cantidad de vCPU necesarias para mi proyecto de compilación, y la cantidad de instancias que quiero en Capacidad.

Para este ejemplo, me complace utilizar el Imagen administradaIncluye Xcode 15.4 y el entorno de ejecución del simulador para iOS 17.5, entre otros paquetes. Puedes leer la lista de paquetes preinstalados en esta imagen en la documentación.

Cuando termine, selecciono Crear flota para regresar a la página de creación del proyecto CodeBuild.

CodeBuild - crear flota

Como siguiente paso, le digo a CodeBuild que cree un nuevo rol de servicio para definir los permisos que quiero para mi entorno de compilación. En el contexto de este proyecto, debo incluir permisos para extraer una configuración de Amplify y acceder a AWS Secrets Manager. No estoy compartiendo instrucciones paso a paso para hacerlo, pero El código del proyecto de muestra contiene la lista de permisos que agregué.

código de compilación mac - 4

Puedo elegir entre proporcionar mi conjunto de comandos de compilación en la definición del proyecto o en un buildspec.yaml archivo incluido en mi proyecto. Selecciono este último.

código de compilación mac - 5

Esto es opcional, pero quiero cargar el artefacto de compilación en un depósito S3 donde puedo archivar cada compilación. Artefacto 1 – Primario sección, por lo tanto selecciono Amazon S3 como Tipoy entro en un Nombre del depósito y artefacto NombreEl nombre del archivo a cargar se especifica en el buildspec.yaml archivo.

código de compilación mac - 6

En la página siguiente, configuro el disparador del proyecto para agregar un GitHub WebHook. Esto configurará CodeBuild para que inicie la compilación cada vez que se envíe una confirmación o una solicitud de incorporación de cambios a mi proyecto en GitHub.

código de construcción - webhook

Finalmente selecciono la naranja. Crear proyecto Botón en la parte inferior de la página para crear este proyecto.

Probando mis compilaciones
Mi proyecto ya incluye scripts de compilación para preparar la compilación, compilar el proyecto, ejecutar las pruebas e implementarlo. Vuelo de prueba de Apple.

codebuild - scripts de proyectos

Añado uno buildspec.yaml archivo en la raíz de mi proyecto para orquestar estos scripts existentes.

version: 0.2

phases:

  install:
    commands:
      - code/ci_actions/00_install_rosetta.sh
  pre_build:
    commands:
      - code/ci_actions/01_keychain.sh
      - code/ci_actions/02_amplify.sh
  build:
    commands:
      - code/ci_actions/03_build.sh
      - code/ci_actions/04_local_tests.sh
  post_build:
    commands:
      - code/ci_actions/06_deploy_testflight.sh
      - code/ci_actions/07_cleanup.sh
artifacts:
   name: $(date +%Y-%m-%d)-getting-started.ipa
   files:
    - 'getting started.ipa'
  base-directory: 'code/build-release'

Agrego este archivo a mi repositorio Git y lo envío a GitHub con el siguiente comando: git commit -am "add buildpsec" buildpec.yaml

En la consola, puedo observar que la compilación ha comenzado.

codebuild - historial de compilación

Cuando selecciono la compilación, puedo ver los archivos de registro o seleccionar Detalles de la fase para recibir un estado de alto nivel de cada fase de la construcción.

codebuild - detalles de la fase

Cuando la compilación es exitosa, puedo ver el archivo IPA de la aplicación iOS cargado en mi bucket S3.

AWS S3 LS

El último script de compilación que ejecuta CodeBuild carga el binario en App Store Connect. Puedo observar nuevas compilaciones en la sección TestFlight de App Store Connect.

Conectar a la App Store

Cosas que debes saber
Se necesitan entre 8 y 10 minutos para preparar una instancia de Amazon EC2 para Mac y aceptar la primera compilación. Esto no es exclusivo de CodeBuild. Las compilaciones que envíe durante el tiempo de preparación de la máquina se ponen en cola y se ejecutarán en orden tan pronto como la máquina esté disponible.

CodeBuild para macOS funciona con flotas reservadas. A diferencia de las flotas bajo demanda, donde pagas por minuto de compilación, las flotas reservadas se cobran por el tiempo que las máquinas de compilación están reservadas para tu uso exclusivo, incluso cuando no se están ejecutando compilaciones. La reserva de capacidad sigue el período mínimo de asignación de 24 horas de Amazon EC2 Mac, según lo exige la Acuerdo de licencia de software para macOS (artículo 3.A.ii).

Se puede compartir una flota de máquinas entre proyectos de CodeBuild en su cuenta de AWS. Las máquinas de la flota están reservadas para su uso exclusivo. Solo CodeBuild puede acceder a ellas.

CodeBuild limpia el directorio de trabajo entre compilaciones, pero las máquinas se reutilizan para otras compilaciones. Le permite usar el mecanismo de caché local de CodeBuild para restaurar rápidamente los archivos seleccionados después de una compilación. Si compila diferentes proyectos en la misma flota, asegúrese de restablecer cualquier estado global, como el llavero de macosy construir artefactos, como Los cachés de paquetes SwiftPM y Xcodeantes de iniciar una nueva construcción.

Cuando trabaje con imágenes de compilación personalizadas, asegúrese de que estén compiladas para una arquitectura Mac-Arm de 64 bits. También debe instalar e iniciar el agente de AWS Systems Manager (SSM Agent). CodeBuild utiliza SSM Agent para instalar su propio agente y administrar la máquina. Por último, asegúrese de que la AMI esté disponible para el ARN de la organización de CodeBuild.

CodeBuild para macOS está disponible en las siguientes regiones de AWS: EE. UU. Este (Ohio, N. Virginia), EE. UU. Oeste (Oregón), Asia Pacífico (Sídney) y Europa (Fráncfort). Estas son las mismas regiones que ofrecen instancias Amazon EC2 Mac M2.

Comience hoy y cree su primer proyecto CodeBuild en macOS.

–séb



Fuente

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

GIPHY App Key not set. Please check settings

Apple lanza watchOS 10.6.1 con corrección de errores de Apple Fitness+

Zelda: Echoes of Wisdom, Mario & Luigi: Brothership y Super Mario Party Jamboree

B2G1: todos los juegos gratuitos de Nintendo Switch: ahorra en pedidos anticipados de Zelda: Echoes Of Wisdom, Mario & Luigi y más