Base de conocimientos  /  Cloud Application Manager  /  Integrarse con Jenkins
Base de conocimientos  /  Cloud Application Manager  /  Integrarse con Jenkins

Configurar CI/CD con Cloud Application Manager, Jenkins y GitHub

Actualizado por Julio Castanar el 16 de mayo de 2019
Código del artículo: kb/417

En este artículo:

Resumen

El complemento Jenkins de Cloud Application Manager automatiza los procesos de integración continua/implementación continua (CI/CD) en cualquier nube y sistema de gestión de control de fuente (SCM).
En este artículo, utilizamos Git como SCM.
Para la CI, el complemento lanza actualizaciones de código en entornos de compilación en cualquier nube a través de Cloud Application Manager.
Para la CD, ejecuta operaciones de automatización y ciclo de vida para cargas de trabajo definidas en las casillas de Cloud Application Manager en los pasos de compilación de trabajos de Jenkins.

Para agregar pasos de compilación de Cloud Application Manager en trabajos de Jenkins, vaya a la página de trabajos. En Build (compilación), haga clic en Add build step (añadir paso de compilación) y seleccione un paso de implementación, gestión o actualización de Cloud Application Manager.

Público

Si usa Cloud Application Manager y también utiliza Jenkins para probar e integrar continuamente cambios de código en desarrollo, lanzamiento o producción, le recomendamos usar el complemento de Jenkins para Cloud Application Manager para automatizar por completo las implementaciones sin contacto.

Requisitos previos

Gestionar solicitudes de incorporación de cambios de GitHub

El complemento simplifica el ciclo de vida de la solicitud de incorporación de cambios de GitHub para cargas de trabajo que se ejecutan a través de Cloud Application Manager. Si bien usted necesita el complemento de GitHub para proporcionar el repositorio, la URL del proyecto y las credenciales de acceso, no necesita el complemento compilador de incorporación de cambios de GitHub, cuya configuración es bastante trabajosa.

job-build-triggers.png

Al marcar la opción Manage GitHub pull request lifecycle with Cloud Application Manager (gestionar el ciclo de vida de la solicitud de incorporación de cambios de GitHub con Cloud Application Manager) en el trabajo de Jenkins, el complemento realiza lo siguiente:

  • Detecta automáticamente confirmaciones al repositorio de GitHub especificado en el trabajo de Jenkins.
  • Activa el trabajo de Jenkins cuando usted crea o actualiza una solicitud de incorporación de cambios.
    El complemento detecta un cambio en cualquiera de los siguientes casos:
    • Usted envía una nueva solicitud de incorporación de cambios,
    • vuelve a abrir una solicitud existente,
    • inserta una nueva confirmación sobre una existente o
    • publica la frase de activación especificada del trabajo de Jenkins en el comentario de la solicitud de incorporación de cambios.
  • Gestiona varias actualizaciones para una solicitud de incorporación de cambios de forma rentable. Normalmente, una solicitud de incorporación de cambios tiene una instancia.
    Cuando se realizan varias confirmaciones de forma simultánea, Jenkins puede tener conflictos y problemas de compilación. Además, las confirmaciones simultáneas para la misma solicitud de incorporación de cambios desperdician recursos de procesos y esclavos. Pero, con la opción de ciclo de vida, el complemento cancela compilaciones anteriores cuando encuentra una nueva actualización para la solicitud de incorporación de cambios.
    De ese modo, ahorra recursos de esclavos y procesos.
  • Al fusionar solicitudes de incorporación de cambios con la rama maestra, el complemento cancela y elimina la instancia de solicitud de incorporación de cambios. Esto es útil para aplicaciones de varios niveles. Por lo general, debe usar etiquetas y eliminar pasos de compilación en trabajos de compilación posteriores para eliminar instancias. Pero evita todo ese trabajo extra con la opción de ciclo de vida del complemento.

Cloud Application Manager proporciona parámetros que contienen información sobre solicitudes de incorporación de cambios de GitHub. Puede llamarlos desde los scripts de casillas, las variables de expresión de texto de casillas y, en trabajos de compilación de Jenkins, scripts de shell.

Nombre Descripción
PR_NUMBER Número de solicitud de incorporación de cambios
PR_URL URL de solicitud de incorporación de cambios (ej.: https://github.com/jenkinsci/elasticbox-plugin/pull/1)
PR_OWNER Inicio de sesión de GitHub del propietario de la solicitud de incorporación de cambios
PR_OWNER_EMAIL Dirección de email del propietario de la solicitud de incorporación de cambios
PR_MERGE_BRANCH Rama a la cual se fusiona la solicitud de incorporación de cambios (ej.: maestra)
PR_BRANCH Rama de Git de la solicitud de incorporación de cambios (ej.: fix-unit-tests)
PR_COMMIT Confirmación de Git para la compilación activada (ej.: fe982b7082035025bef4e851b5bd250a21aae18e)
BUILD_REQUESTER Inicio de sesión de GitHub de la persona que solicita la compilación a través de una frase de activación como "Jenkins test this please" (Jenkins prueba esto)
BUILD_REQUESTER_EMAIL Dirección de correo electrónico de la persona que solicita la compilación

Configuraciones de Deploy Box de Cloud Application Manager

Añada el paso de compilación Deploy Box (casilla de implementación) de Cloud Application Manager en trabajos de Jenkins para iniciar la configuración automatizada definida en casillas desde una cuenta de Cloud Application Manager.

Añadir un paso de compilación

Seleccione una casilla de implementación para una instancia.

job-deploy-box.png

  • Cloud (nube). Seleccione la cuenta de Cloud Application Manager que registró en la configuración del sistema del servidor Jenkins.
  • Workspace (espacio de trabajo). Elija el espacio de trabajo de Cloud Application Manager desde el cual desea implementar la casilla.
  • Box (casilla). Elija la casilla en su espacio de trabajo que desea implementar.
  • Version (versión). Elija Cloud Application Manager automatic version (versión automática de Cloud Application Manager) para implementar una casilla predeterminada. Para cualquier otra casilla, seleccione Latest (última) o una versión del menú desplegable.
  • Instance Name (nombre de la instancia). Elija un nombre para cada instancia creada para esta casilla. Tenga en cuenta la variable utilizada para relacionarla con el número de la solicitud de incorporación de cambios y póngale un nombre diferente al mismo tiempo. Vea el campo que sigue.
  • Tags (etiquetas). Ingrese una o más palabras clave separadas por coma. Estas palabras clave pueden incluir parámetros de compilación de Jenkins o variables de entorno en el formato ${variable_name}. La instancia implementada desde este paso de compilación se etiqueta con estas palabras clave. Asegúrese de que las etiquetas sean únicas si desea unir un paso posterior a este paso de compilación.
  • Automatic Updates (actualizaciones automáticas). Especifique si la casilla se debe actualizar cuando haya una versión nueva disponible.
  • Expiration (vencimiento). Al implementar casillas a través de trabajos de compilacion de Jenkins, puede planear el vencimiento de la instancia en el futuro o en una fecha y hora personalizadas para ahorrar dinero y recursos en el proceso.
    En el paso de compilación de implementación, en Expiration (vencimiento), programe una instancia de la siguiente manera:
    • Si no desea programarla, mantenga la opción predeterminada Always On (siempre activada). Esta opción le permite desactivar la instancia cuando lo desee.

    • Para desactivarla, seleccione Shutdown (desactivar) en el menú desplegable. Luego, especifique si se debe desactivar en una cantidad de horas a partir de ese momento o en una fecha y hora específicas.

      deploy-expiration-shutdown.png

    • Para finalizar, seleccione Terminate (terminar) en el menú desplegable. Luego, especifique el momento de la misma manera que lo hizo anteriormente.

      deploy-expiration-terminate.png

Configurar las variables

En Variables, pase los valores de implemetación de las variables definidas en la casilla y establezca un enlace a las instancias. Según la casilla que haya elegido, se mostrarán distintas variables para completar.

Si aquí tiene una variable que se enlaza a una casilla de un paso de compilación anterior, puede usar etiquetas para hacer referencia a la casilla. Por ejemplo, en un paso de compilación de implementación anterior, una casilla de base de datos de MySQL tiene la etiqueta mysql-db. Al enlazar esta casilla desde un paso de compilación posterior, hacemos referencia a la etiqueta como se muestra.

trabajo-variables

Establecer una política de implementación

Seleccione una política de implementación específica o busque políticas cuyos elementos coincidan con los requisitos que aparecen aquí.

trabajo-implemetación

Configurar los parámentos de Advanced (avanzada)

En Advanced (avanzada), puede establecer opcionalmente más configuraciones de implementación.

trabajo-configuración-avanzada

  • If instance already exists (si la instancia ya existe). Indique a Jenkins qué hacer eligiendo si aún debe implementar, omitir la implementación, reinstalar, reconfigurar o eliminar la instancia existente e implementar una nueva.

  • Wait for completion (esperar que termine). Marque esta opción se desea que los pasos de compilación posteriores esperen a que este termine antes de iniciar el próximo. Para ejecutar pasos de compilación en paralelo, desmarque la casilla.

  • Wait timeout (tiempo de espera). En cualquiera de los pasos de compilación de Cloud Application Manager, puede detener cualquier operación en minutos si no se ejecuta a la hora especificada. De manera predeterminada, el complemento de Jenkins de Cloud Application Manager espera 60 minutos antes de detener una operación. Pero puede especificar un tiempo de espera personalizado.

  • Inject environment variables (introducir variables de entorno). Le permite generar información de instancias. Según la casilla que haya elegido, habrá distintos nombres de variables disponibles. Ingrese un nombre de variable, y Cloud Application Manager lo utilizará para generar información de instancias.
    Puede pasarlas como variables de entorno en los siguientes pasos de compilación o trabajos de compilación.

    trabajo-introducir-variables-entorno

    Por ejemplo, si introduce MYSQL, obtendrá las siguientes variables de entorno para la instancia:

    • MySQL ID de instancia
    • URL_MYSQL: URL de instancia
    • ID_DE_SERVICIO_MYSQL: ID de instancia de servicio
    • ETIQUETAS_MYSQL: MYSQL_TAGS: etiquetas separadas por coma de la instancia

    Según si implementó una o más instancias, también obtendrá estas variables:

    Una sola instancia

    • NOMBRE_MÁQUINA_MYSQL: Nombre de la máquina de la instancia
    • MYSQL_DIRECCIÓN_PÚBLICA: Dirección de IP pública de la instancia.
    • DIRECCIÓN_PRIVADA_MYSQL: Dirección de IP privada de la instancia.

    Varias instancias

    • MYSQL_NOMBRES_MÁQUINA: MYSQL_MACHINE_NAMES: lista de nombres de máquina para las instancias
    • MYSQL_DIRECCIÓN_PÚBLICA: MYSQL_PUBLIC_ADDRESS: lista de direcciones IP públicas para las instancias
    • DIRECCIÓN_PRIVADA_MYSQL: Dirección de IP privada de la instancia.

Gestionar el ciclo de vida de las instancias a través de Cloud Application Manager

Añada el paso de compilación de Cloud Application Manager Manage Instance (gestionar instancia) en trabajos de Jenkins para gestionar el ciclo de vida de instancias en un espacio de trabajo con operaciones específicas.

Seleccionar una operación de instancia

manage-operations.png

Para ejecutar una operación, seleccione la cuenta de Cloud Application Manager registrada en Jenkins, el espacio de trabajo donde se ubica la instancia y la operación en el menú Add operation (añadir operación). Seleccione Reconfigure (reconfigurar), Reinstall (reinstalar), Start (iniciar), Stop (detener), Terminate (finalizar) o Update (actualizar).

Configurar operaciones

  • Cualquiera de las operaciones para reconfigurar, reinstalar, iniciar, finalizar o cancelar una instancia puede configurar algunas de las siguientes funciones:

    manage-operation-terminate.png

    • Tags (etiquetas): ingrese etiquetas para instancias. Separe las etiquetas con comas. Cualquier operación que seleccione se ejecuta en todas las instancias etiquetadas.
      Las etiquetas pueden provenir de un paso de compilación de implementación o pueden ser etiquetas aplicadas a instancias implementadas a través de Cloud Application Manager. Las etiquetas pueden incluir parámetros de compilación de Jenkins y variables de entorno en el formato ${variable_name}.

    • Wait for completion (esperar que termine). Marque esta opción se desea que los pasos de compilación posteriores esperen a que este termine antes de iniciar el próximo. Para ejecutar pasos de compilación en paralelo, desmarque la casilla.

    • Wait timeout (tiempo de espera). En cualquiera de los pasos de compilación de Cloud Application Manager, puede detener cualquier operación en minutos si no se ejecuta a la hora especificada. De manera predeterminada, el complemento de Jenkins de Cloud Application Manager espera 60 minutos antes de detener una operación. Pero puede especificar un tiempo de espera personalizado.

    • Force terminate (forzar finalización). En lugar de cancelar una instancia, puede forzar la finalización seleccionado esta opción en una operación de finalización.

    • Delete after termination (eliminar después de finalizar). En una operación de finalización, marque esta opción para eliminar instancias después de la finalización.

  • En la operación Update (actualizar), ingrese la casilla, la versión preferida y las etiquetas para identificar la instancia implementada que desea actualizar.

    manage-operation-update.png

    Actualice el tiempo de ejecución al proporcionar valores de implementación a las variables de la casilla que elija.
    Para aplicar estos cambios a la instancia, ejecute las opciones de reinstalar o reconfigurar en operaciones posteriores.

Variables de archivo de Update Box

En un proyecto de Jenkins, el paso de compilación  Update Box (casilla de actualización) de Cloud Application Manager le permite cargar las variables de archivo a una casilla en un espacio de trabajo específico.
Añada este paso de compilación para cargar archivos desde una carpeta de trabajo donde el trabajo de Jenkins se ejecuta en una casilla en Cloud Application Manager.

update-box-build.png

Ver CI/CD en acción

Para ver CI/CD de Jenkins en acción, vea el tutorial. Se muestra un flujo de trabajo de implementación típico, automatizado completamente con la ayuda del complemento de Cloud Application Manager.

Comunicarse con soporte de Cloud Application Manager

Lamentamos que esté teniendo problemas en el Gestor de aplicaciones en la nube. Revise los consejos para solucionar problemas o comuníquese con soporte de Cloud Application Manager para proporcionar detalles y capturas de pantalla de ser posible.

Para problemas relacionados con las llamadas API, envíe el cuerpo de la solicitud junto con los detalles del problema.

En el caso de error de casilla, comparta la casilla en el espacio de trabajo en el que su organización y Cloud Application Manager pueden ingresar y adjunte los registros.

  • Linux: SSH y busque el registro en /var/log/elasticbox/elasticbox-agent.log
  • Windows: RDP dentro de la instancia para ubicar el registro en ProgramDataElasticBoxLogselasticbox-agent.log
Powered by Translations.com GlobalLink OneLink SoftwarePowered By OneLink