Compartir a través de


Tutorial: Implementación en una máquina virtual Linux mediante Jenkins y Azure DevOps Services

La integración continua (CI) y la implementación continua (CD) forman una canalización mediante la que puede compilar, liberar e implementar el código. Azure DevOps Services proporciona un conjunto completo y completo de herramientas de automatización de CI/CD para la implementación en Azure. Jenkins es una herramienta popular basada en servidor de CI/CD de terceros que también proporciona automatización de CI/CD. Puede usar Azure DevOps Services y Jenkins juntos para personalizar cómo entregar la aplicación o el servicio en la nube.

En este tutorial, usará Jenkins para compilar una aplicación web de Node.js. Después, use Azure DevOps para implementarlo.

a un grupo de implementación que contiene máquinas virtuales (VM) Linux. Aprenderá a:

  • Descargue la aplicación de muestra.
  • Configure los complementos de Jenkins.
  • Configure un proyecto de Estilo libre de Jenkins para Node.js.
  • Configure Jenkins para la integración de Azure DevOps Services.
  • Cree un punto de conexión de servicio de Jenkins.
  • Cree un grupo de implementación para las máquinas virtuales de Azure.
  • Cree una canalización de publicación de Azure Pipelines.
  • Ejecute implementaciones manuales y desencadenadas por CI.

Prerrequisitos

Descarga la aplicación de ejemplo

Necesita una aplicación para implementar, almacenada en un repositorio de Git. Para este tutorial, se recomienda usar esta aplicación de ejemplo disponible en GitHub. Este tutorial contiene un script de ejemplo que se usa para instalar Node.js y una aplicación. Si desea trabajar con su propio repositorio, debe configurar un ejemplo similar.

Cree una bifurcación de esta aplicación y tome nota de la ubicación (dirección URL) para usarla en pasos posteriores de este tutorial. Para obtener más información, consulte Clonar un repositorio.

Nota:

La aplicación se creó a través de Yeoman. Usa Express, Bower y Grunt. Y tiene algunos paquetes de npm como dependencias. El ejemplo también contiene un script que configura Nginx e implementa la aplicación. Se ejecuta en las máquinas virtuales. En concreto, el script:

  1. Instala Node, Nginx y PM2.
  2. Configura Nginx y PM2.
  3. Inicia la aplicación Node.

Configuración de complementos de Jenkins

En primer lugar, debe configurar dos complementos de Jenkins: NodeJS e Implementación continua de VS Team Services.

  1. Abra la cuenta de Jenkins y seleccione Administrar Jenkins.
  2. En la página Administrar Jenkins , seleccione Administrar complementos.
  3. Filtre la lista para buscar el complemento NodeJS y seleccione la opción Instalar sin reiniciar . Adición del complemento NodeJS a Jenkins
  4. Filtre la lista para buscar el complemento de implementación continua de VS Team Services y seleccione la opción Instalar sin reiniciar .
  5. Vuelva al panel de Jenkins y seleccione Administrar Jenkins.
  6. Seleccione Configuración global de herramientas. Busque NodeJS y seleccione Instalaciones de NodeJS.
  7. Seleccione la opción Instalar automáticamente y, a continuación, escriba un valor nombre .
  8. Haga clic en Guardar.

Configuración de un proyecto de Jenkins Freestyle para Node.js

  1. Seleccione Nuevo elemento. Escriba un nombre de elemento.
  2. Seleccione Proyecto Freestyle. Selecciona Aceptar.
  3. En la pestaña Administración de código fuente , seleccione Git y escriba los detalles del repositorio y la rama que contienen el código de la aplicación.
    Adición de un repositorio a la compilación
  4. En la pestaña Desencadenadores de compilación, seleccione Sondear SCM y escriba la programación H/03 * * * * para sondear el repositorio de Git para ver los cambios cada tres minutos.
  5. En la pestaña Entorno de compilación, seleccione Proporcionar la ruta PATH para la carpeta bin/ de Node & npm y seleccione el valor Instalación de NodeJS. Deje el archivo npmrc configurado para usar el valor predeterminado del sistema.
  6. En la pestaña Compilar , seleccione Ejecutar shell y escriba el comando npm install para asegurarse de que se actualizan todas las dependencias.

Configuración de Jenkins para la integración de Azure DevOps Services

Nota:

Asegúrese de que el token de acceso personal (PAT) que use para los siguientes pasos contenga el permiso Release (lectura, escritura, ejecución y administración) en Azure DevOps Services.

  1. Cree una PAT en la organización de Azure DevOps Services si aún no tiene una. Jenkins requiere esta información para acceder a la organización de Azure DevOps Services. Asegúrese de almacenar la información del token para los próximos pasos de esta sección.

    Para obtener información sobre cómo generar un token, lea ¿Cómo puedo crear un token de acceso personal para Azure DevOps Services?.

  2. En la pestaña Acciones posteriores a la compilación, seleccione Agregar acción posterior a la compilación. Seleccione Archivar los artefactos.

  3. En Archivos que se van a archivar, escriba **/* para incluir todos los archivos.

  4. Para crear otra acción, seleccione Agregar acción posterior a la compilación.

  5. Seleccione Activar liberación en TFS/Team Services. Escriba el URI de la organización de Azure DevOps Services, como https://{nombre-organización}.visualstudio.com.

  6. Escriba el nombre del proyecto .

  7. Elija un nombre para el pipeline de lanzamiento. (Cree esta canalización de lanzamiento más adelante en Azure DevOps Services).

  8. Elija las credenciales para conectarse al entorno de Azure DevOps Services o Azure DevOps Server:

    • Deje el nombre de usuario en blanco si usa Azure DevOps Services.
    • Escriba un nombre de usuario y una contraseña si usa una versión local de Azure DevOps Server.
      Configuración de acciones posteriores a la compilación de Jenkins
  9. Guarde el proyecto de Jenkins.

Creación de un punto de conexión de servicio de Jenkins

Un punto de conexión de servicio permite a Azure DevOps Services conectarse a Jenkins.

  1. Abra la página Servicios en Azure DevOps Services, abra la lista Nuevo punto de conexión de servicio y seleccione Jenkins. Adición de un punto de conexión de Jenkins
  2. Escriba un nombre para la conexión.
  3. Escriba la dirección URL del servidor Jenkins y seleccione la opción Aceptar certificados SSL que no son de confianza . Una dirección URL de ejemplo es http://{YourJenkinsURL}.westcentralus.cloudapp.azure.com.
  4. Escriba el nombre de usuario y la contraseña de la cuenta de Jenkins.
  5. Seleccione Comprobar conexión para comprobar que la información es correcta.
  6. Seleccione Aceptar para crear el punto de conexión de servicio.

Creación de un grupo de implementación para máquinas virtuales de Azure

Necesita un grupo de implementación para registrar el agente de Azure DevOps Services y así poder implementar la canalización de lanzamiento en su máquina virtual. Los grupos de implementación facilitan la definición de grupos lógicos de máquinas de destino para la implementación y la instalación del agente necesario en cada máquina.

Nota:

En el procedimiento siguiente, asegúrese de instalar los requisitos previos y no ejecute el script con privilegios sudo.

  1. Abra la pestaña Versiones del centro de compilación y versión , abra Grupos de implementación y seleccione + Nuevo.
  2. Escriba un nombre para el grupo de implementación y una descripción opcional. A continuación, seleccione Crear.
  3. Elija el sistema operativo para la máquina virtual de destino de implementación. Por ejemplo, seleccione Ubuntu 16.04+.
  4. Seleccione Usar un token de acceso personal en el script para la autenticación.
  5. Seleccione el vínculo Requisitos previos del sistema . Instale los requisitos previos para el sistema operativo.
  6. Seleccione Copiar script en el Portapapeles para copiar el script.
  7. Inicie sesión en la máquina virtual de destino de implementación y ejecute el script. No ejecute el script con permisos de superusuario (sudo).
  8. Tras la instalación, se le solicitarán etiquetas de grupo de implementación. Acepte los valores predeterminados.
  9. En Azure DevOps Services, busque la máquina virtual recién registrada en Destinos en Grupos de implementación.

Creación de un pipeline de entrega de Azure Pipelines

Una pipeline de publicación especifica el proceso que usa Azure Pipelines para implementar la aplicación. En este ejemplo, ejecutará un script de shell.

Para crear el pipeline de lanzamiento en Azure Pipelines:

  1. Abra la pestaña Versiones del centro de compilación y versión y seleccione Crear canalización de versión.
  2. Seleccione la plantilla Vacía eligiendo comenzar con un proceso vacío.
  3. En la sección Artefactos , seleccione + Agregar artefacto y elija Jenkins para Tipo de origen. Seleccione la conexión al punto de acceso de Jenkins. A continuación, seleccione el trabajo de origen de Jenkins y seleccione Agregar.
  4. Seleccione los puntos suspensivos situados junto a Entorno 1. Seleccione Agregar fase de grupo de implementación.
  5. Elija el grupo de implementación.
  6. Seleccione + para agregar una tarea a la fase del grupo de implementación.
  7. Seleccione la tarea Script de shell y haga clic en Agregar. La tarea Script de shell proporciona la configuración de un script que se ejecutará en cada servidor para poder instalar Node.js e iniciar la aplicación.
  8. En la Ruta de script, introduzca $(System.DefaultWorkingDirectory)/Fabrikam-Node/deployscript.sh.
  9. Seleccione Avanzado y, a continuación, habilite Especificar directorio de trabajo.
  10. En Directorio de trabajo, escriba $(System.DefaultWorkingDirectory)/Fabrikam-Node.
  11. Edite el nombre de la canalización de lanzamiento al nombre que especificó en la pestaña Acciones tras la construcción de la compilación en Jenkins. Jenkins necesita este nombre para poder desencadenar una nueva versión cuando se actualicen los artefactos de origen.
  12. Seleccione Guardar y Aceptar para guardar el pipeline de lanzamiento.

Ejecución de despliegues manuales y despliegues desencadenados por CI (Integración Continua)

  1. Seleccione + Versión y seleccione Crear versión.
  2. Seleccione la compilación que completó en la lista desplegable resaltada y seleccione Encolar.
  3. Elija el enlace de lanzamiento en el mensaje emergente. Por ejemplo: "Se ha creado Release-1."
  4. Abra la pestaña Registros para ver la salida de la consola de lanzamiento.
  5. En el explorador, abra la dirección URL de uno de los servidores que agregó al grupo de implementación. Por ejemplo, escriba http://{your-server-ip-address}.
  6. Vaya al repositorio git de origen y modifique el contenido del encabezado h1 en el archivo app/views/index.jade con texto cambiado.
  7. Confirme el cambio.
  8. Después de unos minutos, verá una nueva versión creada en la página Versiones de Azure DevOps. Abra la versión para ver la implementación que tiene lugar. ¡Felicidades!

Solución de problemas del complemento Jenkins

Si encuentra algún error con los complementos de Jenkins, abra un problema en Jenkins JIRA para el componente específico.

Pasos siguientes

En este tutorial, ha automatizado la implementación de una aplicación en Azure mediante Jenkins para compilar y Azure DevOps Services para su lanzamiento. Ha aprendido a:

  • Compile la aplicación en Jenkins.
  • Configure Jenkins para la integración de Azure DevOps Services.
  • Cree un grupo de implementación para las máquinas virtuales de Azure.
  • Cree una canalización de Azure que configure las máquinas virtuales e implemente la aplicación.

Para más información sobre cómo usar Azure Pipelines para los pasos de compilación y versión, consulte esto.

Para obtener información sobre cómo crear una canalización de CI/CD basada en YAML para implementarla en máquinas virtuales, pase al siguiente tutorial.