Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Integración en Jenkins

En esta página, se te guiará para configurar Jenkins a fin de almacenar paquetes de Maven compilados en un repositorio de Artifact Registry.

La administración de paquetes se encuentra en versión Alfa. Solo está disponible para los usuarios Alfa y es posible que no incluya todas las funciones disponibles para la administración de contenedores. Si deseas postularte para la versión Alfa, completa el formulario de registro. Si quieres obtener más información, consulta Requisitos para acceder a las funciones Alfa.

Antes de comenzar

  1. Si el repositorio de destino no existe, crea un repositorio nuevo.

Configura el acceso a tu repositorio

  1. Crea una cuenta de servicio dedicada para que Jenkins la use con Artifact Registry.

    Ejecuta el siguiente comando para crear una cuenta de servicio llamada jenkins-sa:

    gcloud iam service-accounts create jenkins-sa
    

    Esto crea una cuenta de servicio llamada jenkins-sa@PROJECT.iam.gserviceaccount.com, en la que PROJECT es el ID de tu proyecto.

  2. En el proyecto que contiene el repositorio, otorga la función de escritor de artefactos de Cloud Build a la cuenta de servicio de Jenkins que creaste. Puedes otorgar la función a todos los repositorios en el proyecto o puedes otorgar la función a los repositorios específicos a los que necesita acceder la cuenta de servicio.

    Para obtener detalles sobre los permisos y otorgar acceso por función, consulta Configura el control de acceso.

Configura un clúster de GKE

Cuando configures un nuevo clúster o grupo de nodos de Google Kubernetes Engine, usa la cuenta de servicio que creaste para que Jenkins la use.

Console

Para crear un clúster con Cloud Console, sigue estos pasos:

  1. Visita el menú de Artifact Registry en Cloud Console.

    Visita el menú de Artifact Registry

  2. Haga clic en Crear clúster.

  3. Configura el clúster como quieras. Aún no hagas clic en Crear.

  4. Haz clic en Más opciones en el grupo de nodos predeterminado.

  5. En la sección Seguridad, selecciona la cuenta de servicio de Jenkins que creaste.

  6. Haz clic en Guardar para salir de la superposición.

  7. Haga clic en Crear.

gcloud

Usa uno de los siguientes comandos para crear el clúster con la cuenta de servicio de Jenkins. En los comandos, PROJECT es el ID del proyecto.

Para crear un clúster con la cuenta de servicio, ejecuta el comando.

gcloud container clusters create example-cluster --service-account=jenkins-sa@PROJECT.iam.gserviceaccount.com

Para crear un grupo de nodos en un clúster existente:

gcloud container node-pools create example-pool --service-account=jenkins-sa@PROJECT.iam.gserviceaccount.com

Consulta la documentación de gcloud container clusters create para obtener detalles sobre el comando.

Configura Jenkins en GKE

  1. Sigue el instructivo para configurar Jenkins en GKE. Usa el clúster que creaste en la sección anterior.

  2. En Jenkins, actualiza el complemento de GKE a la versión más reciente. Haz clic en Manage Jenkins > Manage Plugins > Updates.

Configura un proyecto de Maven

  1. Bifurca el proyecto de muestra de Maven en el repositorio de GitHub de la documentación de Jenkins.

  2. Clone el repositorio bifurcado.

    git clone git@github.com:USER_NAME/simple-java-maven-app.git
    
  3. Configura una canalización nueva en la interfaz de Jenkins.

    1. Haz clic en Elemento nuevo.
    2. Selecciona Canalización.
    3. Establece un nombre para la canalización y haz clic en Aceptar.
  4. En la pestaña General, configura las siguientes opciones en la sección Canalización:

    • Selecciona Secuencia de comandos de canalización de SCM.
    • En la lista desplegable de SCM, selecciona Git y, luego, especifica la URL y las credenciales para conectarte al repositorio de GitHub.

    Captura de pantalla de la configuración de la canalización

  5. Haga clic en Save.

Configura la conexión en el repositorio

Configura Jenkins con el repositorio y las credenciales para conectarte al repositorio.

  1. Agrega tu repositorio a pom.xml de Maven. Usa el siguiente comando para imprimir un fragmento que deseas agregar.

    gcloud artifacts print-settings mvn [--project=PROJECT] \
    [--repository=REPOSITORY] [--location=LOCATION]
    

    Donde

    • PROJECT es el ID del proyecto. Si se omite esta marca, se usa el proyecto actual o predeterminado.
    • REPOSITORY es el ID del repositorio. Si configuraste un repositorio predeterminado de Artifact Registry, se usa cuando se omite esta marca del comando.
    • LOCATION es la ubicación regional o multirregional del repositorio.
  2. Crea un archivo YAML como la plantilla de pods para los agentes de Jenkins.

    mkdir jenkins
    cat > jenkins/maven-pod.yaml << EOF
    apiVersion: v1
    kind: Pod
    spec:
      containers:
      - name: maven
        image: maven:3.3.9-jdk-8-alpine
        command: ['cat']
        tty: true
    EOF
    
  3. Modifica el archivo Jenkinsfile.

    pipeline {
        agent none
        stages {
            stage('Deploy') {
                steps {
                     agent {
                         kubernetes {
                             label 'mavenpod'
                             yamlFile 'jenkins/maven-pod.yaml'
                           }
                       }
                       container('maven') {
                       sh "mvn -B clean deploy"
                     }
                }
            }
        }
    }
    

Inicia una compilación

  1. Envía los cambios que realizaste al proyecto de GitHub.

    git add . && git commit -m "Configure my Jenkins pipeline" && git push
    
  2. En la interfaz de Jenkins, inicia una compilación nueva para la aplicación en tu proyecto de Maven de muestra.

Cuando la compilación se completa con éxito, los artefactos se agregan al repositorio de Maven de Artifact Registry que creaste.

Ejecuta el siguiente comando para enumerar los paquetes en el repositorio:

gcloud artifacts packages list --repository=mvn-jenkins --location=LOCATION

El resultado es similar al siguiente ejemplo:

Listing items under project {YOUR_PROJECT}, repository mvn-jenkins.

PACKAGE                   CREATE_TIME          UPDATE_TIME
com.mycompany.app:my-app  2019-06-25T17:09:44  2019-06-25T17:09:44