Este blog explica cómo puedes usar AWS CDK para implementar en tu cuenta de AWS mediante la canalización CI/CD de GitHub Actions.
Siéntete libre de utilizar los fragmentos de código como desees.
Haga clic aquí y aquí para ver una plantilla de servicio GitHub AWS Serverless completamente funcional que utiliza el mismo fragmento.
Actualización enero 2024
Este archivo CI/CD completo se ha revisado y actualizado con versiones más nuevas y múltiples entornos: implementaciones en cuentas de desarrollo, ensayo y producción:
Vídeo TL;DR
Esta entrada del blog está disponible como vídeo.
Repasando los pasos del trabajo
Repasemos los pasos del proceso de CI/CD:
Configuración del entorno
Configuración de cuenta de AWS
Ejecutar linters y pruebas unitarias
Implementar pila
Ejecutar pruebas E2E
Destruir pila (solo para pila de desarrollo)
Configuración del entorno
Configuración de Python y Node
Este fragmento configurará Python 3.9 y Node v16 en el ejecutor CI/CD.
Configurar AWS CDK
Se recomienda utilizar la última versión de pip y AWS CDK.
En la línea 4, debes instalar tus dependencias de Python con pip, pipenv o poetry, dependiendo de tu arma preferida para administrar las dependencias de Python.
Estas dependencias incluyen dependencias de desarrollo (pytest, linters, etc.) y dependencias de tiempo de ejecución del servicio.
Configurar AWS Secrets
Debes configurar los secretos del repositorio de GitHub para que este fragmento funcione.
En Configuración/Secretos/Acciones, agregue 'AWS_SECRET_KEY' y 'AWS_ACCESS_KEY'.
Estos secretos se utilizan en una función de IAM predefinida que usted creó para su proceso de CI/CD.
Este es un ejemplo simple; sin embargo, por razones de seguridad, es mejor utilizar una solución SSO (fuera del alcance de esta guía).
La configuración yaml:
En la línea 7, elija la región de AWS de su elección.
Linters y pruebas unitarias
Justo antes de la implementación, se recomienda ejecutar linters como:
pylint/escama8
comprobaciones previas a la confirmación
yapf/negro
Comprobaciones de complejidad de código (radón/xenón)
Vea el ejemplo y la configuración de linters en mi plantilla de GitHub aquí y el archivo make que ejecuta los comandos de linters aquí .
Una vez finalizados los linters, ejecute pruebas unitarias como una primera puerta lógica de servicio.
Tiempo de implementación
En la línea 3, debes establecer la ruta correcta a tu archivo 'app.py' de CDK.
Normalmente coloco todos los archivos del proyecto CDK en una carpeta 'cdk' en lugar de en la ruta raíz del proyecto.
Pruebas E2E
Una vez que se complete la implementación, debe ejecutar las pruebas E2E y asegurarse de que su servicio se ejecute correctamente en AWS. Puede usar pytest para crear solicitudes de API REST u otros activadores para probar el servicio implementado.
Destruir pila
Este paso es relevante solo para la pila local o las solicitudes de extracción en las que desea destruir la pila al final.
Al igual que en la etapa de implementación, asegúrese de configurar la ruta correcta al archivo 'app.py' de su CDK.
Comments