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

Configurar Jenkins con Cloud Application Manager

Actualizado por Gavin Lai y Julio Castanar en 16 de mayo de 2019
Código del artículo: kb/419

En este artículo:

Resumen

Para integrar y realizar implementaciones de forma continua a través de Cloud Application Manager, necesita configurar un servidor de Jenkins para que funcione con su sistema de gestión de control de fuente (SCM) y el complemento de Cloud Application Manager.

Si GitHub es su SCM, estas secciones documentan cómo integrar Jenkins, los complementos de GitHub y Cloud Application Manager.

Para instalar Jenkins con Cloud Application Manager y Git Plugins, siga los pasos que se indican en esta página para armar e implementar el servidor Jenkins a partir de una casilla. La casilla instala el servidor de código abierto Jenkins más reciente con los complementos de GitHub, las dependencias y el complemento de Cloud Application Manager.

IMPORTANTE: Dado que la casilla de servidor de Jenkins está basada en Debian, recuerde implementarla en una imagen de Debian Ubuntu Linux.

Público

Si usa 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

Crear una casilla de servidor en Jenkins

Acceda a Cloud Application Manager con su cuenta.

Siga los pasos que se indican a continuación:

1. Cree una nueva casilla

En la página Boxes (casillas), haga clic en New Box (nueva casilla) y seleccione el tipo de script. Ingrese estos datos y haga clic en Save (guardar).

Casilla de script del servidor jenkins en CAM

2. Variables de la casilla de configuración

Vaya a la página Code (código) en esa casilla y agregue las siguientes variables para almacenar los valores de implementación del servidor Jenkins.
La siguiente tabla muestra las variables necesarias para configurar la casilla de servidor de Jenkins.

Nombre Tipo Descripción
GIT_REPOSITORY_URL Texto Proporcione su propio repositorio de Git.
GITHUB_ACCESS_TOKEN Texto Sus credenciales de acceso de GitHub.
GITHUB_PROJECT_URL Texto El URL de su proyecto de GitHub.
GITHUB_USER Texto Su nombre de usuario de GitHub.
HTTP Puerto Puerto del servidor de Jenkins para permitir el tráfico de Internet.
Complementos Texto Dependencias de complementos de Jenkins separadas por un espacio.
GITHUB_PLUGIN_CONFIG Archivo Complemento que activa GitHub para que realice solicitudes del tipo push/pull.
MERGE_JOB Archivo Plantilla de trabajo de compilación de fusión

Código de la casilla del servidor de jenkins en CAM - agregar variables

Use el botón New (nuevo) para agregar una variable y complétela como se indica a continuación:
- seleccione el tipo de variable adecuado,
- rellenar el nombre de la variable en mayúsculas,
- deje su valor vacío por defecto y marque la casilla de verificación requerida. Preste atención al campo
Visibility (visibilidad) para proteger la privacidad de su variable (Public [pública], Private [privada] o Internal [interna]).

  • Proporcione su propio repositorio de Git mediante una variable de texto denominada GIT_REPOSITORY_URL.

    Casilla del servidor de jenkins en CAM - var-git-repository

  • Apruebe el token de acceso de GitHub en una variable de texto.

    Casilla del servidor de jenkins en CAM - var-git-access-token


Obtenga el token de acceso de GitHub 

Para ingresar, use los datos de su cuenta de GitHub. En el extremo superior derecho, seleccione la opción settings (configuraciones) en el menú de usuario. En Settings (configuraciones), vaya a Developer settings (configuraciones del desarrollador) > Personal access tokens (tokens de acceso personal) > Generate new token (generar nuevo token). Describa por qué necesita el token (por ejemplo: "CAM Jenkins Server"). "Servidor CAM Jenkins").

Obtener token de GitHub

En Scope (alcance), seleccione repo (repositorio) y repo: status (repositorio: estado). Luego, haga clic en Generate Token (generar token). Cópielo y péguelo como se indica.


  • Proporcione el URL de su proyecto de GitHub en una variable de texto denominada GITHUB_PROJECT_URL.

Casilla del servidor de jenkins en CAM - var-git-project-url

  • Proporcione su nombre de usuario de GitHub como una variable de texto denominada GITHUB_USER.

Casilla del servidor de jenkins en CAM - var-git-user

  • Abra el puerto HTTP 8080 en el servidor de Jenkins mediante una variable de puerto denominada HTTP para permitir el tráfico de Internet.

Casilla del servidor de jenkins en CAM - var-http-port

  • Haga referencia a las dependencias de los complementos de Cloud Application Manager, Git y GitHub en una variable de texto denominada PLUGINS.
    Ingrese este valor:
        elasticbox git github

Casilla del servidor de jenkins en CAM - var-plugins

  • Agregue un complemento que active GitHub para que realice solicitudes del tipo push/pull. Nombre esta variable como GITHUB_PLUGIN_CONFIG

Casilla del servidor de jenkins en CAM - var-git-plugin-config

Copie y pegue este script en un archivo de texto, guárdelo en XML y cárguelo a una variable de archivo denominada GITHUB_PLUGIN_CONFIG.

<?xml version='1.0' encoding='UTF-8'?>
 <com.cloudbees.jenkins.GitHubPushTrigger_-DescriptorImpl plugin="github@1.9.1">
    <manageHook>true</manageHook>
    <credentials>
        <com.cloudbees.jenkins.Credential>
            <username>{{ GITHUB_USER }}\</username>
            <apiUrl>https://api.github.com</apiUrl>
            <oauthAccessToken>{{ GITHUB_ACCESS_TOKEN }}\</oauthAccessToken>
        </com.cloudbees.jenkins.Credential>
    </credentials>
</com.cloudbees.jenkins.GitHubPushTrigger_-DescriptorImpl>
  • Agregue la plantilla de trabajo de compilación de fusión como una variable de archivo denominada MERGE_JOB.

Casilla del servidor de jenkins en CAM - var-merge-job

Copie y pegue el script en un archivo de texto, guárdelo en XML y cárguelo como se indica.

<project>
    <actions/>
    <description/>
    <keepDependencies>false</keepDependencies>
    <properties>
        <com.coravy.hudson.plugins.github.GithubProjectProperty plugin="github@1.9.1">
            <projectUrl>{{ GITHUB_PROJECT_URL }}\</projectUrl>
        </com.coravy.hudson.plugins.github.GithubProjectProperty>
    </properties>
    <scm class="hudson.plugins.git.GitSCM" plugin="git@2.2.7">
        <configVersion>2</configVersion>
        <userRemoteConfigs>
            <hudson.plugins.git.UserRemoteConfig>
                <name>origin</name>
                <refspec>+refs/heads/*:refs/remotes/origin/*</refspec>
                <url>{{ GIT_REPOSITORY_URL }}\</url>
            </hudson.plugins.git.UserRemoteConfig>
        </userRemoteConfigs>
        <branches>
            <hudson.plugins.git.BranchSpec>
                <name>master</name>
            </hudson.plugins.git.BranchSpec>
        </branches>
        <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
        <submoduleCfg class="list"/>
        <extensions/>
    </scm>
    <canRoam>true</canRoam>
    <disabled>true</disabled>
    <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
    <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
    <triggers>
        <com.cloudbees.jenkins.GitHubPushTrigger plugin="github@1.9.1">
            <spec/>
        </com.cloudbees.jenkins.GitHubPushTrigger>
    </triggers>
    <concurrentBuild>false</concurrentBuild>
    <builders/>
    <publishers/>
    <buildWrappers/>
</project>
  • Agregue la plantilla de trabajo de solicitud pull como una variable de archivo denominada PULL_REQUEST_JOB.

Casilla del servidor de jenkins en CAM - var-pull-request-job

Copie y pegue el script en un archivo de texto, guárdelo en XML y cárguelo como se indica.

<project>
    <actions/>
    <description/>
   <keepDependencies>false</keepDependencies>
   <properties>
       <com.coravy.hudson.plugins.github.GithubProjectProperty plugin="github@1.9.1">
           <projectUrl>{{ GITHUB_PROJECT_URL }}\</projectUrl>
       </com.coravy.hudson.plugins.github.GithubProjectProperty>
   </properties>
   <scm class="hudson.plugins.git.GitSCM" plugin="git@2.2.7">
       <configVersion>2</configVersion>
       <userRemoteConfigs>
           <hudson.plugins.git.UserRemoteConfig>
               <name>origin</name>
               <refspec>+refs/pull/*:refs/remotes/origin/pr/*</refspec>
               <url>{{ GIT_REPOSITORY_URL }}\</url>
           </hudson.plugins.git.UserRemoteConfig>
       </userRemoteConfigs>
       <branches>
           <hudson.plugins.git.BranchSpec>
               <name>${PR_COMMIT}</name>
           </hudson.plugins.git.BranchSpec>
       </branches>
       <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
       <submoduleCfg class="list"/>
       <extensions/>
   </scm>
   <canRoam>true</canRoam>
   <disabled>true</disabled>
   <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
   <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
   <triggers>
       <com.elasticbox.jenkins.triggers.PullRequestBuildTrigger plugin="elasticbox@0.9.7">
         <spec></spec>
         <triggerPhrase>.*test\W+this\W+please.*</triggerPhrase>
         <whitelist></whitelist>
       </com.elasticbox.jenkins.triggers.PullRequestBuildTrigger>
   </triggers>
   <concurrentBuild>false</concurrentBuild>
   <builders/>
   <publishers>
       <com.cloudbees.jenkins.GitHubCommitNotifier plugin="github@1.9.1"/>
   </publishers>
   <buildWrappers/>
</project>

3. Agregue los siguientes eventos para instalar el servidor de Jenkins y los complementos.

evento pre_instalación

Instale Jenkins. Copie y pegue el script en el evento configure, y haga clic en Save (guardar).

#/bin/bash

# For certain images In some clouds like GCE, packages are being installed by the provider at this point, so we need to wait for the installation to finish
WAIT_SECONDS=0
while [[ -f /var/lib/apt/lists/lock && ${WAIT_SECONDS} -lt 180 ]]
do
    sleep 5
    WAIT_SECONDS=$(( WAIT_SECONDS + 5 ))
done

# Install Jenkins and Git
curl -ks https://jenkins-ci.org/debian-stable/jenkins-ci.org.key | apt-key -y add -
echo deb http://pkg.jenkins-ci.org/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list
  apt-get install default-jre -y
apt-get -y update
apt-get -y --allow-unauthenticated install jenkins git
configurar evento

Instale los complementos y las plantillas del build job, y configure los complementos de GitHub con nombre de usuario, token de acceso y URL del repositorio. Copie y pegue el script en el evento configure, y haga clic en Save (guardar).

#!/bin/bash

set -e

function install_template() {
    SOURCE_URL=${1}
    DESTINATION_PATH=${2}
    curl -ks ${SOURCE_URL} -o ${DESTINATION_PATH}
    elasticbox config -i ${DESTINATION_PATH} -o ${DESTINATION_PATH}
    chown jenkins:jenkins ${DESTINATION_PATH}
}

JENKINS_HOME=~jenkins

# Install plugins specified in variable PLUGINS
PLUGINS="{{ PLUGINS }}\"
if [ -n "${PLUGINS}" ]
then
    # Get the latest plugin info for update center
    mkdir -p ${JENKINS_HOME}/updates
    curl -Ls http://updates.jenkins-ci.org/update-center.json | sed '1d;$d' > ${JENKINS_HOME}/updates/default.json
    chown -R jenkins:jenkins ${JENKINS_HOME}/updates

    # Restart Jenkins and wait for it to be up
    service jenkins restart
    sleep 30

    for PLUGIN_NAME in ${PLUGINS}
    do
        echo Installing plugin ${PLUGIN_NAME}
        java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar -s http://127.0.0.1:8080/ install-plugin ${PLUGIN_NAME}
        echo Installed plugin ${PLUGIN_NAME}
    done
fi

# Configure GitHub plugin with GitHub user ID and access token specified in the variable GITHUB_USER and GITHUB_ACCESS_TOKEN
install_template {{ GITHUB_PLUGIN_CONFIG }}\ ${JENKINS_HOME}/com.cloudbees.jenkins.GitHubPushTrigger.xml

# Install CI/CD job templates
mkdir -p ${JENKINS_HOME}/jobs/pull-request
install_template {{ PULL_REQUEST_JOB }}\ ${JENKINS_HOME}/jobs/pull-request/config.xml

mkdir ${JENKINS_HOME}/jobs/merge
install_template {{ MERGE_JOB }}\ ${JENKINS_HOME}/jobs/merge/config.xml

chown -R jenkins:jenkins ${JENKINS_HOME}/jobs

# Restart Jenkins server
service jenkins restart

Implementar la casilla de servidor de Jenkins

Seleccione una imagen de Debian Ubuntu Linux al implementar la casilla del servidor de Jenkins. Puede realizar el lanzamiento en cualquier proveedor de nube público o privado, o en su propia infraestructura. Aquí lo implementamos en Google Cloud.

Antes de empezar

Configure su red de proveedor en la nube para permitir el tráfico de Internet hacia el servidor de Jenkins. Haga que la dirección IP de la instancia sea pública y configure el puerto del firewall en 8080. Además, abra otro puerto para permitir que los esclavos de Jenkins se comuniquen con el servidor. Asigne a este puerto el número que desee.

Aquí configuramos la red de Google Cloud para permitir el tráfico de Internet a través del puerto 8080 y el tráfico de esclavos de Jenkins a través del puerto 55555.

Configurar el firewall del proveedor en la nube

  1. Ingrese a la consola de Google Cloud.

  2. Seleccione el proyecto asociado con su cuenta de proveedor de Google en Cloud Application Manager.

  3. Amplíe Compute > Compute Engine > Networks (redes). Seleccione la red predeterminada. En Firewall rules (reglas de firewall), haga clic en Create new (crear nueva).

  4. Ingrese los datos como se indica para abrir los puertos 8080 y 55555. Tenga en cuenta que Cloud Application Manager usa la etiqueta objetivo para detectar la regla del firewall.

  5. Sincronice su cuenta de proveedor en Cloud Application Manager para obtener la regla.

Pasos para implementar el servidor de Jenkins 

  1. Ingrese a Cloud Application Manager.

  2. Cree una nueva casilla para políticas de implementación. Boxes (casillas) > New (nueva) > Deployment Policy (política de implementación) y seleccione Virtual or Physical Machine (máquina virtual o física).

  3. Seleccione Google Compute como proveedor. Asigne un nombre a la casilla y haga clic en Save (guardar).

  4. Vaya a la nueva casilla para políticas de implementación y modifíquela.

    Servidor de jenkins en CAM - deploy-policy edit

  5. En la política, seleccione una imagen de Debian Ubuntu Linux. Aunque el tipo de máquina g1.small le servirá, seleccione n1-standard-2 para realizar una implementación más rápida.

  6. Bajo red, seleccione la regla de cortafuegos de Google nube. Seleccionar IP ephemeral para hacer públicos la dirección IP de instancia.

    servidor de jenkins en CAM - deploy-policy config

  7. Haga clic en Save (guardar) para guardar los cambios.

  8. Vaya a la casilla del servidor de Jenkins que estableció.

  9. En su página de casillas, haga clic en Deploy (implementar).

  10. En este diálogo de la instancia, nombre la implementación y seleccione la nueva casilla para políticas de implementación.

  11. Verifique las variables de implementación del servidor Jenkins como el URL del repositorio, el token de acceso, el URL del proyecto y el nombre de usuario de GitHub.

  12. Haga clic en Deploy (implementar) para lanzar el servidor Jenkins.

Cuando esté en línea, en la página de instancias dentro de Endpoints (puntos de conexión), haga clic en la dirección IP pública para abrir el portal de gestión del servidor Jenkins. Puede ver que el servidor tiene todos los complementos de GitHub y las plantillas del trabajo de compilación.

Conectar Cloud Application Manager en Jenkins

En la interfaz de gestión de su servidor Jenkins, siga estos pasos para registrar su cuenta de Cloud Application Manager.

Nota: Configure el URL del servidor Jenkins para hacer que los enlaces del servidor Jenkins funcionen en los mensajes publicados automáticamente en las solicitudes pull de GitHub. Vaya a Manage Jenkins (gestionar jenkins) > Configure System (configurar sistema). Dentro de Jenkins URL (URL de Jenkins), establezca el URL y haga clic en Save (guardar).

Pasos

  1. Dentro de Jenkins > Manage Jenkins (gestionar Jenkins) > Configure System (configurar sistema) > Cloud (nube), haga clic en Add a new cloud (agregar una nueva nube) y seleccione Cloud Application Manager. Ingrese los datos como se indica:

    Nombre Descripción
    Descripción Introduzca la información para identificar su cuenta de administrador de aplicaciones nube en los trabajos de Jenkins.
    URL de terminal Introduzca una URL personalizada si utiliza el administrador de aplicaciones como dispositivo.
    Máx. N.º de instancias Este es el número total de casos que Jenkins lanzará a través de su cuenta. Recomendamos al menos 0.
    Token de autenticación Obtenga un token y péguelo aquí. Si usa un nombre de usuario y contraseña para acceder a Cloud Application Manager, obténgalos al hacer clic en Get Authentication Token (obtener token de autenticación).
  2. Haga clic en Verify Authentication Token (verificar token de autenticación) para ver si Jenkins puede conectarse a Cloud Application Manager.

  3. Cuando haya terminado, haga clic en Save (guardar).

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: Windows: RDP dentro de la instancia para ubicar el registro en ProgramData/ElasticBox/Logs/elasticbox-agent.log
Powered by Translations.com GlobalLink OneLink SoftwarePowered By OneLink