- Servidores Cloud
- Implementación continua (despliegue automático)
- Aplicaciones en las clases
- Despliegue de aplicaciones en un servidor real
- Preparación del servidor en un servicio Cloud: AWS
- Configuración de los repositorios
- Permitir realizar el despliegue o lanzamiento de la aplicación de manera automática en un servidor de producción cada vez que se realice un
commit
o unaPull Request
en la rama principal del repositorio en GitHub. - El despliegue sólo se realizará si la fase de test se completa satisfactoriamente.
- Documentación de implementación continua con GitHub Actions
- Despliegue de aplicaciones en GitHub Actions
- Documentación de implementación continua en Travis CI
- Conceptos de Implementación continua (AWS)
- Implementación continua mediante Travis CI y Heroku
- Documentación de Heroku
- Introducción a metodologías de implementación continua tal como se hace en la industria
- Despliegue de aplicaciones web en servidores reales (Heroku, AWS, Azure, OpenShift,…) accesibles desde Internet (no sólo en el equipo local)
- Lanzamiento de versiones de programas ejecutables o resultado de la compilación del código fuente y publicación en la plataforma correspondiente (LaunchPad, NPM, GitHub Releases, AWS S3,…)
- Preparación del servidor de despliegue. Este paso sólo será necesario realizarlo la primera vez. Habrá que darse de alta en el servicio correspondiente (Heroku, AWS, Azure,…) y preparar una aplicación para que reciba nuestro código. Opcionalmente habrá que configurar los servicios adicionales que vaya a necesitar nuestra aplicación (base de datos, etc.).
- Configuración del repositorio. Realizar todos los pasos de integración continua descritos en el flujo de trabajo de la sesión 5.
- Modificación del fichero de configuración de GitHub Actions o Travis CI para que incluya la configuración relacionada con el despliegue. Sólo es necesario hacerlo la primera vez. Es posible que este paso exija la instalación de alguna aplicación adicional para generar la configuración de manera sencilla.
- Publicación de cambios. Todos los cambios que lleguen a la rama principal del repositorio vía
commit
o víapull request
activan la ejecución de un trabajo de integración continua. - Una vez lanzada la tarea de integración continua, a continuación de la fase de testeo se ejecutarán las tareas adicionales de despliegue (deploy). La fase de despliegue sólo se ejecutará si la fase de test se supera con éxito.
- Comprobación. Se procederá a comprobar si ha habido algún error en el despliegue de la aplicación accediendo a la tarea de integración continua en GitHub Actions o Travis CI.
Los tres últimos videotutoriales de este tema explican cómo utilizar GitHub Actions como alternativa a Travis. En este enlace puedes acceder al repositorio de ejemplo utilizado para desplegar aplicaciones en AWS y Azure con GitHub Actions.
- Crear una cuenta en https://www.heroku.com/
- Es necesario introducir una tarjeta de crédito, aunque no se realizarán cargos
- La capa gratuita incluye 1000 horas de funcionamiento
- New / Create App
- Resources / Add-ons
- Ejemplo: ClearDB MySQL
- Conexión para crear base de datos
- Documentación
- Crear un token de acceso a Heroku:
- Iniciar sesión en Heroku
- Acceder a Account settings
- Seleccionar la opción Applications
- En la sección Authorizations, pulsar en Create authorization
- Dejar fecha de caducidad en blanco si se desea
- Copiar el Authorization token
- Añadir la siguiente configuración al archivo
.travis.yml
(sustituyendoNOMBRE-APP-HEROKU
por el nombre de la aplicación creada en Heroku):deploy: provider: heroku app: NOMBRE-APP-HEROKU
- Instalar la aplicación travis (Ruby):
- Fuente
- Ejecutar
gem install travis
- Iniciar sesión en la aplicación Travis mediante el usuario y el token de GitHub (debes haber creado el token de acceso previamente). Para ello ejecutar:
travis login --pro -g TOKEN_DE_GITHUB
- Cifrar el token de Heroku mediante la herramienta Travis. Para ello ejecutar el siguiente comando sustituyendo
TOKEN_HEROKU
por el token previamente copiado (si se está utilizando la versión travis-ci.org, quitar el flag--pro
).travis encrypt TOKEN_HEROKU --add deploy.api_key --pro
- Comprobar que el archivo
.travis.yml
tiene el siguiente aspecto:deploy: provider: heroku app: NOMBRE-APP-HEROKU api_key: secure: "TOKEN HEROKU CIFRADO"
- Por último, subir los cambios a GitHub y comprobar que se despliega la aplicación correctamente.
- Comprobar el resultado de la fase de despliegue en https://travis-ci.com
A continuación se incluye un enlace a un repositorio de ejemplo con un proyecto PHP configurado para realizar el despliegue de una aplicación completa con base de datos con Travis y Heroku.
En caso de utilizar otro proveedor para el despliegue habrá que modificar el fichero de configuración con los datos adecuados para dicho proveedor: usuario y contraseña (o token), nombre de la aplicación, etc.
A continuación se muestran los enlaces de la documentación para hacer el despliegue en AWS y Azure:
Los servicios AWS y Azure son bastante más complejos que Heroku, por lo que quedan fuera del ámbito de este curso. En caso de estar interesado en el despliegue de aplicaciones en estos servicios utilizando acceso a datos se pueden consultar los siguientes recursos:
- Ejemplo de despligue de aplicaciones .NET en AWS BeanStalk
- Ejemplo de despliegue de una aplicación NodeJS en AWS Lambda
Deberás haber recibido en tu correo una invitación para participar en un laboratorio AWS Learner Lab. De esta manera podrás realizar la práctica sin necesidad de crear ninguna cuenta ni usar tarjeta de crédito en ningún proveedor cloud.
La tarea consiste en realizar los pasos indicados en el videotutorial 6.5: desplegar la aplicación de ejemplo propuesta en AWS.
De manera completamente opcional, puedes realizar algún despliegue adicional. Para ello, crea un repositorio denominado sesion6-despliegue-continuo
en la cuenta de la organización creada en la sesión 3. Dicho repositorio debe contener una aplicación web en un lenguaje de tu elección. Opcionalmente puede utilizar base de datos. Debe incluir al menos un test y estar configurada para desplegarse en una aplicación que hayas preparado en Heroku, Azure, AWS o algún otro proveedor de tu elección. Te recomiendo utilizar el proveedor AWS mediante el laboratorio en el que te he dado de alta para evitar problemas con pagos o creación de cuentas.
Puedes utilizar cualquier proyecto o práctica tanto personal como de clase que tuvieras preparada anteriormente. Si no tienes ninguna puedes utilizar como base uno de los repositorios de ejemplo.
Cuando hayas terminado, incluye un enlace a la URL de la aplicación desplegada en el archivo README
de tu repositorio.
Una vez terminada la tarea, crea una discusión en la organización creada en la sesión 3 y nómbrame mediante @pedroprieto
. Incluye un enlace al repositorio y un enlace a la URL de la aplicación desplegada en el cuerpo del mensaje.
No hay que subir ningún archivo en la tarea de la plataforma Moodle del Cefire.