Esta página explica como configurar o Jenkins para armazenar pacotes Maven criados num repositório do Artifact Registry.
Antes de começar
Se o repositório de destino não existir, crie um novo repositório.
Configurar o acesso ao seu repositório
Crie uma conta de serviço dedicada para o Jenkins usar com o Artifact Registry.
Execute o seguinte comando para criar uma conta de serviço com o nome
jenkins-sa
:gcloud iam service-accounts create jenkins-sa
Isto cria uma conta de serviço denominada jenkins-sa@PROJECT.iam.gserviceaccount.com, onde PROJECT é o ID do seu projeto.
No projeto que contém o repositório, conceda a função de escritor do Artifact Registry à conta de serviço do Jenkins que criou. Pode conceder a função para todos os repositórios no projeto ou conceder a função para os repositórios específicos aos quais a conta de serviço precisa de aceder.
Para ver detalhes sobre as autorizações e a concessão de acesso por função, consulte o artigo Configurar o controlo de acesso.
Configurar um cluster do GKE
Quando configurar um novo cluster ou pool de nós do Google Kubernetes Engine, use a conta de serviço que criou para o Jenkins usar.
Consola
Para criar um cluster através da Google Cloud consola, siga os passos seguintes:
Aceda ao menu Artifact Registry na Google Cloud consola.
Clique em Criar cluster.
Configure o cluster conforme pretendido. Não clique ainda em Criar.
Clique em Mais opções no conjunto de nós predefinido.
Na secção Segurança, selecione a conta de serviço do Jenkins que criou.
Clique em Guardar para sair da sobreposição.
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 seu 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 node pool num cluster existente:
gcloud container node-pools create example-pool --service-account=jenkins-sa@PROJECT.iam.gserviceaccount.com
Consulte a documentação gcloud container clusters create para ver detalhes sobre o comando.
Configurar o Jenkins no GKE
Siga o tutorial para configurar o Jenkins no GKE. Use o cluster que criou na secção anterior.
No Jenkins, atualize o plug-in do GKE para a versão mais recente. Clique em Manage Jenkins > Manage Plugins > Updates.
Configure um projeto Maven
Crie um fork do projeto Maven de exemplo no repositório do GitHub da documentação do Jenkins.
Clone o repositório bifurcado.
git clone git@github.com:USER_NAME/simple-java-maven-app.git
Configure um novo pipeline na interface do Jenkins.
- Clique em Novo item.
- Selecione Pipeline.
- Defina um nome para o pipeline e clique em OK.
No separador Geral, configure as seguintes opções na secção Pipeline:
- Selecione Script de pipeline do SCM.
- Na lista pendente SCM, selecione Git e, de seguida, especifique o URL e as credenciais para estabelecer ligação ao seu repositório do GitHub.
Clique em Guardar.
Configurar a ligação ao repositório
Configure o Jenkins com o repositório e as credenciais para se ligar ao repositório.
Adicione o seu repositório ao Maven
pom.xml
. Use o seguinte comando para imprimir um fragmento a adicionar.gcloud artifacts print-settings mvn [--project=PROJECT] \ [--repository=REPOSITORY] [--location=LOCATION]
Onde
- PROJECT é o ID do projeto. Se esta flag for omitida, é usado o projeto atual ou predefinido.
- REPOSITORY é o ID do repositório. Se configurou um repositório do Artifact Registry predefinido, este é usado quando esta flag é omitida do comando.
- LOCATION é a localização regional ou multirregional do repositório.
Crie um ficheiro YAML como modelo de pod para 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
Modifique o ficheiro
Jenkinsfile
.pipeline { agent none stages { stage('Deploy') { steps { agent { kubernetes { label 'mavenpod' yamlFile 'jenkins/maven-pod.yaml' } } container('maven') { sh "mvn -B clean deploy" } } } } }
Iniciar uma compilação
Envie as alterações que fez para o projeto do GitHub.
git add . && git commit -m "Configure my Jenkins pipeline" && git push
Na interface do Jenkins, inicie uma nova compilação para a aplicação no seu projeto Maven de exemplo.
Quando a compilação for concluída com êxito, os artefactos são adicionados ao repositório de pacotes Java do Artifact Registry que criou.
Execute o seguinte comando para listar os pacotes no repositório:
gcloud artifacts packages list --repository=mvn-jenkins --location=LOCATION
O resultado tem um aspeto semelhante ao seguinte exemplo:
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