Questa pagina descrive la procedura per configurare Jenkins in modo da archiviare i pacchetti Maven compilati in un repository Artifact Registry.
Prima di iniziare
Se il repository di destinazione non esiste, creane uno nuovo.
Configurazione dell'accesso al repository
Crea un account di servizio dedicato da utilizzare con Artifact Registry.
Esegui il comando seguente per creare un account di servizio denominato
jenkins-sa
:gcloud iam service-accounts create jenkins-sa
Viene creato un account di servizio denominato jenkins-sa@PROJECT.iam.gserviceaccount.com, dove PROJECT è l'ID progetto.
Nel progetto che contiene il repository, concedi il ruolo Artifact Registry Writer all'account di servizio Jenkins che hai creato. Puoi concedere il ruolo per tutti i repository del progetto oppure per i repository specifici a cui l'account di servizio deve accedere.
Per maggiori dettagli sulle autorizzazioni e sulla concessione dell'accesso in base al ruolo, consulta Configurare il controllo dell'accesso.
Configurazione di un cluster GKE
Quando configuri un nuovo cluster o un nuovo node pool Google Kubernetes Engine, utilizza l'account di servizio che hai creato per Jenkins.
Console
Per creare un cluster utilizzando la console Google Cloud, svolgi i seguenti passaggi:
Visita il menu Artifact Registry nella console Google Cloud.
Fai clic su Crea cluster.
Configura il cluster come preferisci. Non fare ancora clic su Crea.
Fai clic su Altre opzioni nel pool di nodi predefinito.
Nella sezione Sicurezza, seleziona l'account di servizio Jenkins che hai creato.
Fai clic su Salva per uscire dall'overlay.
Fai clic su Crea.
gcloud
Utilizza uno dei seguenti comandi per creare il cluster con l'account di servizio Jenkins. Nei comandi, PROJECT è l'ID progetto.
Per creare un cluster con l'account di servizio, esegui il comando.
gcloud container clusters create example-cluster --service-account=jenkins-sa@PROJECT.iam.gserviceaccount.com
Per creare un node pool in un cluster esistente:
gcloud container node-pools create example-pool --service-account=jenkins-sa@PROJECT.iam.gserviceaccount.com
Per maggiori dettagli sul comando, consulta la documentazione di gcloud container clusters create.
Configurazione di Jenkins su GKE
Segui il tutorial per la configurazione di Jenkins su GKE. Utilizza il cluster creato nella sezione precedente.
In Jenkins, aggiorna il plug-in GKE alla versione più recente. Fai clic su Gestisci Jenkins > Gestisci plug-in > Aggiornamenti.
Configurare un progetto Maven
Crea un fork del progetto Maven di esempio nel repository GitHub della documentazione di Jenkins.
Clona il repository sottoposto a fork.
git clone git@github.com:USER_NAME/simple-java-maven-app.git
Configura una nuova pipeline nell'interfaccia di Jenkins.
- Fai clic su Nuovo elemento.
- Seleziona Pipeline.
- Assegna un nome alla pipeline e fai clic su OK.
Nella scheda Generali, configura le seguenti opzioni nella sezione Pipeline:
- Seleziona Script pipeline da SCM.
- Nell'elenco a discesa SCM, seleziona Git, quindi specifica l'URL e le credenziali per connetterti al tuo repository GitHub.
Fai clic su Salva.
Configurazione della connessione al repository
Configura Jenkins con il repository e le credenziali per connetterti al repository.
Aggiungi il tuo repository al
pom.xml
Maven. Utilizza il seguente comando per stampare uno snippet da aggiungere.gcloud artifacts print-settings mvn [--project=PROJECT] \ [--repository=REPOSITORY] [--location=LOCATION]
Dove
- PROJECT è l'ID progetto. Se questo flag viene omesso, viene utilizzato il progetto corrente o predefinito.
- REPOSITORY è l'ID del repository. Se hai configurato un repository Artifact Registry predefinito, viene utilizzato quando questo flag viene omesso dal comando.
- LOCATION è la posizione regionale o multiregionale del repository.
Crea un file YAML come modello di pod per gli agenti 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
Modifica il file
Jenkinsfile
.pipeline { agent none stages { stage('Deploy') { steps { agent { kubernetes { label 'mavenpod' yamlFile 'jenkins/maven-pod.yaml' } } container('maven') { sh "mvn -B clean deploy" } } } } }
Avvio di una build
Esegui il push delle modifiche apportate al progetto GitHub.
git add . && git commit -m "Configure my Jenkins pipeline" && git push
Nell'interfaccia di Jenkins, avvia una nuova build per l'applicazione nel progetto Maven di esempio.
Al termine della build, gli elementi vengono aggiunti al repository di pacchetti Java di Artifact Registry che hai creato.
Esegui il comando seguente per elencare i pacchetti nel repository:
gcloud artifacts packages list --repository=mvn-jenkins --location=LOCATION
L'output è simile al seguente esempio:
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