AWS CodeBuild
Servicio de compilación CI basado en la nube completamente administrado que realiza la compilación de código fuente, ejecución de pruebas y creación de paquetes de despliegue
Descripción general
AWS CodeBuild es un servicio de integración continua (CI) completamente administrado que ejecuta la compilación, pruebas y empaquetado de código fuente. No requiere gestión de servidores de compilación; se inicia un entorno de contenedor independiente para cada compilación y las compilaciones paralelas escalan automáticamente. Se definen los pasos de compilación en buildspec.yml y se puede obtener el código fuente desde CodeCommit, GitHub, Bitbucket o S3. Soporta cualquier tarea de compilación, incluyendo la construcción de imágenes Docker, empaquetado de funciones Lambda y generación de sitios estáticos.
Diseño de fases en buildspec.yml y estrategia de caché
El proceso de compilación de CodeBuild se compone de 4 fases definidas en buildspec.yml. En la fase install se configuran runtimes y herramientas, en pre_build se realizan preparativos de pruebas y procesos de autenticación (como login a ECR), en build se ejecuta la compilación y pruebas, y en post_build se generan artefactos y se envían notificaciones de despliegue. Para reducir el tiempo de compilación, la estrategia de caché es importante: el caché S3 reutiliza dependencias de paquetes (node_modules, .m2, etc.) entre compilaciones, y el caché local mantiene las capas de Docker. En la práctica, combinar caché S3 y caché local es efectivo: la primera compilación se restaura desde S3 y las compilaciones consecutivas en el mismo host se aceleran con caché local. Mientras GitHub Actions está estrechamente acoplado al repositorio y ofrece un rico marketplace de acciones, CodeBuild tiene la ventaja de poder acceder directamente a recursos dentro de VPC (RDS, ElastiCache) desde el entorno de compilación y permite un control de acceso granular mediante roles IAM, siendo fuerte como CI nativo de AWS.
Entorno de compilación y selección de tamaño de instancia
CodeBuild inicia un entorno de contenedor independiente para cada compilación y las compilaciones paralelas escalan automáticamente. Las imágenes del entorno de compilación se pueden seleccionar entre imágenes administradas proporcionadas por AWS (Ubuntu, Amazon Linux 2) e imágenes personalizadas registradas en ECR. Las imágenes administradas vienen con los principales runtimes de lenguaje preinstalados (Node.js, Python, Java, Go, .NET), reduciendo el tiempo de configuración en la fase install. Los tamaños de instancia son 5 niveles: small (3 GB de memoria), medium (7 GB), large (15 GB), xlarge (70 GB) y 2xlarge (145 GB), seleccionados según la carga de compilación. La tarificación es por minuto bajo demanda, con small a aproximadamente $0.005 por minuto y large a aproximadamente $0.02. Para la construcción de imágenes Docker, es común habilitar el modo privilegiado para ejecutar Docker-in-Docker y hacer push a ECR. Libros sobre CI/CD (Amazon) permiten aprender de forma sistemática.
Integración con CodePipeline y soporte para monorepos
El uso representativo de CodeBuild es en pipelines CI/CD nativos de AWS combinados con CodePipeline. La configuración típica es: un push a GitHub activa CodeBuild para compilar y probar, y si tiene éxito, CodeDeploy despliega en ECS o Lambda. En configuraciones monorepo, se puede usar la función de compilación batch de buildspec.yml para ejecutar múltiples compilaciones en paralelo. Con build-list o build-graph se definen dependencias, permitiendo controlar que la compilación de aplicaciones comience después de completar la compilación de bibliotecas compartidas. Como punto de atención, el timeout predeterminado de CodeBuild es de 60 minutos, que puede ser insuficiente para compilaciones de monorepos grandes o pruebas de integración. Se puede extender hasta un máximo de 8 horas, pero si el tiempo de compilación es largo, se debe considerar primero la paralelización de compilaciones y la optimización del caché. Al habilitar la función de reportes, los resultados de pruebas y la cobertura de código se pueden visualizar en la consola de CodeBuild, permitiendo rastrear la evolución de la calidad.