mediante AWS CodePipeline
En este tutorial, aprenderá a crear una canalización de lanzamiento de software automatizada que implementa una aplicación de muestra activa. Creará la canalización con AWS CodePipeline, un servicio que compila, prueba e implementa el código cada vez que se produce un cambio en este. Utilizará su cuenta de GitHub, un bucket de Amazon Simple Storage Service (S3) o un repositorio de AWS CodeCommit, como la ubicación de origen del código de la aplicación de muestra. También utilizará AWS Elastic Beanstalk como destino de la implementación para la aplicación de muestra. La canalización completada podrá detectar cambios realizados al repositorio de origen que contiene la aplicación de muestra y actualizar, a continuación, la aplicación de muestra activa.
La implementación continua le permite implementar revisiones en un entorno de producción automáticamente sin la aprobación explícita del desarrollador, con lo que se automatiza todo el proceso de publicación de software.
Todas las operaciones que se explican en este tutorial pueden realizarse con la capa gratuita.
Administración de los recursos de AWS
Inicio de sesión en la consolaLa canalización de implementación continua necesitará un entorno de destino que contenga servidores virtuales o instancias de Amazon EC2, donde utilizará código de muestra. Preparará este entorno antes de crear la canalización.
a. Para simplificar el proceso de instalación y configuración de instancias EC2 para este tutorial, pondrá en marcha un entorno de muestra mediante AWS Elastic Beanstalk. Elastic Beanstalk le permite alojar fácilmente aplicaciones web sin tener que lanzar, configurar u operar servidores virtuales. Aprovisiona y opera automáticamente la infraestructura (p. ej., servidores virtuales, balanceadores de carga, etc.) y proporciona la pila de aplicaciones (p. ej., SO, lenguaje y marco, servidor web y de aplicaciones, etc.) por usted.
b. En el menú desplegable, elija PHP, a continuación, haga clic en Launch Now (Lanzamiento inmediato).
Nota: Si ha creado una aplicación Elastic Beanstalk con anterioridad, haga clic en: Create New Application (Crear nueva aplicación) en la esquina superior derecha. Asigne un nombre a la aplicación y cree un entorno de servidor web nuevo. Seleccione PHP como plataforma y Single Instance (Instancia individual) como tipo de entorno. Si tiene previsto iniciar sesión remotamente en sus instancias, seleccione un par de claves. De lo contrario, deje los valores predeterminados para las opciones restantes y cree el entorno para la canalización de implementación continua.
c. Elastic Beanstalk comenzará creando un entorno de muestra en el que podrá implementar su aplicación. Creará una instancia de Amazon EC2, un grupo de seguridad, un grupo de Auto Scaling, un bucket de Amazon S3, alarmas de Amazon CloudWatch y un nombre de dominio para su aplicación.
Nota: Esto puede tardará varios minutos en completarse.
En este paso, recuperará una copia del código de muestra de la aplicación y elegirá una fuente para alojar el código. La canalización toma código de la fuente y luego realiza acciones en él.
Puede utilizar una de estas tres opciones como su fuente: un repositorio de GitHub, un bucket de Amazon S3 o un repositorio de AWS CodeCommit. Seleccione su opción preferida y siga los pasos que se indican a continuación:
En este paso, creará y configurará una canalización sencilla con dos acciones: código fuente e implementación. Proporcionará CodePipeline con las ubicaciones de su repositorio de código fuente y entorno de implementación.
a. Haga clic aquí para abrir la consola de AWS CodePipeline.
- En la página de bienvenida, haga clic en Create pipeline (Crear canalización).
- Si es la primera vez que usa AWS CodePipeline, aparece una página de introducción en lugar de la de bienvenida. Haga clic en Get started (Empezar).
b. En la página Step 1: Name (Paso 1: Nombre):
- Pipeline name (Nombre de la canalización): escriba el nombre de su canalización, DemoPipeline.
- Haga clic en Next Step (Siguiente paso).
Nota: Después de crear una canalización, no podrá cambiar el nombre.
c. En la página Step 2: Source (Paso 2: Código fuente), seleccione la ubicación del código fuente que ha seleccionado y siga los pasos a continuación:
d. Una canalización de implementación continua de verdad necesita una etapa de compilación en la que se compila código y se comprueba la unidad. CodePipeline le permite conectar a la canalización su proveedor de compilación preferido. No obstante, en este tutorial omitirá la etapa de compilación.
- En la página Step 3: Build (Paso 3: Compilación), elija No Build (Sin compilación).
- Haga clic en Next Step (Siguiente paso).
e. En la página Step 4: Beta (Paso 4: Beta):
- Deployment provider (Proveedor de implementación): Haga clic en AWS Elastic Beanstalk.
- Application name (Nombre de la aplicación): Haga clic en My First Elastic Beanstalk Application (Mi primera aplicación de Elastic Beanstalk).
- Environment name (Nombre del entorno): Haga clic en Default-Environment.
- Haga clic en Next Step (Siguiente paso).
Nota: El nombre "Beta" es simplemente el nombre asignado de manera predeterminada a esta etapa de la canalización, al igual que "Source" era el nombre asignado a la primera etapa de la canalización.
f. En la página Step 5: Service Role (Paso 5: Rol de servicio)
- Service Role (Rol de servicio): Haga clic en Create role (Crear rol).
- Se le redirigirá a una página de la consola de IAM que describe el rol de AWS-CodePipeline-Service que se creará por usted. Haga clic en Allow.
- En cuanto se cree el rol, se le devolverá a la página Step 5: Service Role (Paso 5: Rol de servicio) donde aparecerá AWS-CodePipeline-Service en el nombre del rol. Haga clic en Next step (Siguiente paso).
Nota: Solo es necesario crear el rol de servicio la primera vez que cree una canalización en AWS CodePipeline. Si ya se ha creado un rol de servicio, podrá elegirlo en la lista desplegable de roles. Como la lista desplegable mostrará todos los roles de servicio de IAM asociados con su cuenta, si elige un nombre distinto del predeterminado asegúrese de que se pueda reconocer como el rol de servicio de AWS CodePipeline.
En este paso, lanzará su canalización. Una vez que se ha creado la canalización, comenzará a ejecutarse automáticamente. En primer lugar, detecta el código de la aplicación de muestra en la ubicación del código fuente, empaqueta los archivos y, a continuación, los traslada a la segunda etapa que ha definido. Durante esta etapa, pasa el código a Elastic Beanstalk, que contiene la instancia EC2 donde se alojará su código. Elastic Beanstalk se encarga de la implementación del código en la instancia EC2.
a. En la página Step 6: Review (Paso 6: Revisar), revise la información y haga clic en Create pipeline (Crear canalización).
b. Una vez creada la canalización, aparece la página de estado de la canalización y la canalización comienza a ejecutarse automáticamente. Puede ver el progreso y los mensajes de éxito y error a medida que la canalización realiza cada acción.
Para verificar que la canalización se ha ejecutado con éxito, monitoree el progreso de la canalización a medida que avanza por cada etapa. El estado de cada fase cambiará de No executions yet a In Progress y después a Succeeded o Failed. La canalización debería completar la primera ejecución en unos minutos.
c. En el área de estado de la etapa Beta, haga clic en AWS Elastic Beanstalk.
d. La consola AWS Elastic Beanstalk se abre con detalles de la implementación.
- Haga clic en el entorno que creó con anterioridad llamado Default-Environment.
e. Haga clic en la URL que aparece en la parte superior derecha de la página para ver el sitio web de muestra que ha implementado.
En este paso, revisará el código de muestra y confirmará el cambio en el repositorio. CodePipeline detectará el código de muestra actualizado e iniciará automáticamente su implementación en la instancia EC2 a través de Elastic Beanstalk.
Tenga en cuenta que la página web de muestra que ha implementado hace referencia a AWS CodeDeploy, un servicio que automatiza las implementaciones de código. En CodePipeline, CodeDeploy es una alternativa al uso de Elastic Beanstalk para la implementación de acciones. Vamos a actualizar el código de muestra para que indique de forma correcta que ha implementado la muestra mediante Elastic Beanstalk.
d. Regrese a su canalización en la consola de CodePipeline. Transcurridos unos minutos, debería ver cómo la fuente cambia a azul, lo que indica que la canalización ha detectado los cambios que ha realizado en el repositorio de código fuente. Una vez que esto suceda, llevará automáticamente el código actualizado a Elastic Beanstalk.
- Cuando el estado de la canalización sea Succeeded (Realizado correctamente), en el área de estado de la etapa Beta, haga clic en AWS Elastic Beanstalk.
e. La consola AWS Elastic Beanstalk se abre con detalles de la implementación. Seleccione el entorno que creó con anterioridad llamado Default-Environment.
f. Haga clic en la URL que aparece en la parte superior derecha de la página para ver de nuevo el sitio web de muestra. Su texto se ha actualizado automáticamente a través de la canalización de implementación continua.
Para evitar cargos en el futuro, eliminará todos los recursos que lanzó durante este tutorial, entre los que se incluyen la canalización, la aplicación Elastic Beanstalk y la fuente que configuró para alojar el código.
a. En primer lugar, elimine la canalización:
- En la página para ver la canalización, haga clic en Edit (Editar).
- Haga clic en Delete (Eliminar).
- Escriba el nombre de la canalización y haga clic en Delete (Eliminar).
b. En segundo lugar, elimine la aplicación Elastic Beanstalk:
- Visite la consola de Elastic Beanstalk.
- Haga clic en Actions (Acciones).
- Luego haga clic en Terminate Environment (Terminar el entorno).
Ha creado con éxito una canalización de publicación de software automatizada mediante AWS CodePipeline. Ha creado mediante CodePipeline una canalización que utiliza GitHub, Amazon S3 o AWS CodeCommit como la ubicación de origen para el código de la aplicación e implementa, a continuación, el código a una instancia de Amazon EC2 administrada por AWS Elastic Beanstalk. Su canalización implementará automáticamente su código cada vez que se produzca un cambio de código. Está un paso más cerca de practicar la implementación continua.
Ahora que ha aprendido a crear una canalización sencilla mediante AWS CodePipeline, puede obtener más información consultando los siguientes recursos:
- Cree una canalización más avanzada de cuatro etapas siguiendo está guía. Esta canalización utiliza el repositorio de GitHub para su código fuente, un servidor de compilación Jenkins para compilar y probar el proyecto y una aplicación AWS CodeDeploy para implementar el código compilado en un servidor de ensayo.
- Ponga en marcha rápidamente una canalización de cuatro etapas con un servidor de compilación Jenkins mediante nuestro kit de inicio para canalizaciones.
- Más información sobre la distribución continua.