Como integrar com o Jenkins

Nesta página, orientamos você na configuração do Jenkins para armazenar pacotes Maven criados em um repositório do Artifact Registry.

Antes de começar

Se não existir um repositório de destino, crie um novo repositório.

Como configurar o acesso ao seu repositório

  1. Crie uma conta de serviço dedicada para que o Jenkins use com o Artifact Registry.

    Execute o seguinte comando para criar uma conta de serviço chamada jenkins-sa:

    gcloud iam service-accounts create jenkins-sa
    

    Isso cria uma conta de serviço chamada jenkins-sa@PROJECT.iam.gserviceaccount.com, em que PROJECT é o ID do seu projeto.

  2. No projeto que contém o repositório, conceda o papel Gravador do Artifact Registry à conta de serviço do Jenkins que você criou. É possível conceder o papel para todos os repositórios no projeto ou conceder o papel para os repositórios específicos que a conta de serviço precisa acessar.

    Para detalhes sobre permissões e concessão de acesso por papel, consulte Como configurar o controle de acesso.

Como configurar um cluster do GKE

Ao configurar um novo cluster ou pool de nós do Google Kubernetes Engine, use a conta de serviço criada para o Jenkins usar.

Console

Para criar um cluster usando o Console do Google Cloud, siga estas etapas:

  1. Acesse o menu do Artifact Registry no console do Google Cloud.

    Acesse o menu do Artifact Registry

  2. Clique em Criar cluster.

  3. Configure o cluster como quiser. Não clique em Criar ainda.

  4. Clique em Mais opções no pool de nós padrão.

  5. Na seção Segurança, selecione a conta de serviço do Jenkins criada.

  6. Clique em Salvar para sair da sobreposição.

  7. Clique em Criar.

gcloud

Use um dos seguintes comandos para criar o cluster com a conta de serviço do Jenkins. Nos comandos, PROJECT é o ID do projeto.

Para criar um cluster com a conta de serviço, execute o comando.

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

Para criar um pool de nós em um cluster atual:

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

Consulte a documentação gcloud container clusters create para detalhes sobre o comando.

Como instalar o Jenkins no GKE

  1. Siga o tutorial para configurar o Jenkins no GKE. Use o cluster que você criou na seção anterior.

  2. No Jenkins, atualize o plug-in do GKE para a versão mais recente. Clique em Gerenciar o Jenkins > Gerenciar Plug-ins > Atualizações.

Como configurar um projeto Maven

  1. Bifurque o projeto Maven de amostra no repositório do GitHub da documentação do Jenkins.

  2. Clone o repositório bifurcado.

    git clone git@github.com:USER_NAME/simple-java-maven-app.git
    
  3. Configure um novo pipeline na interface do Jenkins.

    1. Clique em Novo item.
    2. Selecione Pipeline.
    3. Defina um nome para o pipeline e clique em OK.
  4. Na guia Geral, configure as seguintes opções na seção Pipeline:

    • Selecione Script de pipeline no SCM.
    • Na lista suspensa do SCM, selecione Git e especifique o URL e as credenciais para se conectar ao seu repositório GitHub.

    Captura de tela das configurações do pipeline

  5. Clique em Save.

Como configurar a conexão ao repositório

Configure o Jenkins com o repositório e as credenciais para se conectar ao repositório.

  1. Adicione seu repositório ao Maven pom.xml. Use o seguinte comando para imprimir um snippet a ser adicionado.

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

    Onde

    • PROJECT é o ID do projeto; Se essa sinalização for omitida, o projeto atual ou padrão será usado.
    • REPOSITORY é o ID do repositório. Se você tiver configurado um repositório do Artifact Registry padrão, ele será usado quando essa sinalização for omitida no comando.
    • LOCATION é o local regional ou multirregional do repositório.
  2. Crie um arquivo YAML como o modelo de pod para os agentes do 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. Modifique o arquivo Jenkinsfile.

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

Como iniciar uma compilação

  1. Envie as alterações feitas para o projeto do GitHub.

    git add . && git commit -m "Configure my Jenkins pipeline" && git push
    
  2. Na interface do Jenkins, inicie uma nova compilação do aplicativo no projeto Maven de amostra.

Quando o build for concluído, os artefatos serão adicionados ao repositório de pacotes Java do Artifact Registry que você criou.

Execute o comando a seguir para listar os pacotes no repositório:

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

A saída será assim:

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