Skip to content

Latest commit

 

History

History
133 lines (110 loc) · 9.68 KB

sesion-6.org

File metadata and controls

133 lines (110 loc) · 9.68 KB

Integración continua: Despliegue automático

./imagenes/Logotipo_ME_FP_GV_FSE.png

Videotutoriales y presentación

Índice

  • 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

Objetivos

  • 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 una Pull Request en la rama principal del repositorio en GitHub.
  • El despliegue sólo se realizará si la fase de test se completa satisfactoriamente.

Referencias

Contenidos

Aplicaciones en las clases

  • 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,…)

Flujo de trabajo general

  1. 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.).
  2. Configuración del repositorio. Realizar todos los pasos de integración continua descritos en el flujo de trabajo de la sesión 5.
  3. 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.
  4. Publicación de cambios. Todos los cambios que lleguen a la rama principal del repositorio vía commit o vía pull request activan la ejecución de un trabajo de integración continua.
  5. 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.
  6. 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.

Despliegue automático con GitHub Actions (recomendado)

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.

Despliegue automático con Travis CI y Heroku (OPCIONAL)

Creación de una cuenta en el servidor Cloud Heroku

  • 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

Creación de una aplicación en Heroku

  • New / Create App

Configuración de servicios adicionales: base de datos

  • Resources / Add-ons
  • Ejemplo: ClearDB MySQL
  • Conexión para crear base de datos

Modificación del fichero de configuración de Travis

  • 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 (sustituyendo NOMBRE-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):
    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.

Visualización del resultado de la ejecución

Repositorio de ejemplo

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.

Alternativas a Heroku: AWS y Azure

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:

Tareas

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.

Entrega de la tarea

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.