Auf dieser Seite werden Sie Schritt für Schritt durch die Konfiguration von Jenkins geführt, um erstellte Maven-Pakete in einem Artifact Registry-Repository zu speichern.
Hinweis
Wenn das Ziel-Repository nicht vorhanden ist, erstellen Sie ein neues Repository.
Zugriff auf Ihr Repository konfigurieren
Erstellen Sie ein dediziertes Dienstkonto für Jenkins zur Verwendung mit Artifact Registry.
Führen Sie den folgenden Befehl aus, um ein Dienstkonto mit dem Namen
jenkins-sa
zu erstellen:gcloud iam service-accounts create jenkins-sa
Dadurch wird ein Dienstkonto mit dem Namen jenkins-sa@PROJECT.iam.gserviceaccount.com, wobei PROJECT ist Ihre Projekt-ID.
Weisen Sie in dem Projekt, das das Repository enthält, dem von Ihnen erstellten Jenkins-Dienstkonto die Rolle Artifact Registry-Autor zu. Sie können entweder die Rolle für alle Repositories im Projekt zuweisen oder nur für die Repositories, auf die das Dienstkonto zugreifen muss.
Ausführliche Informationen zu Berechtigungen und zum Gewähren des Zugriffs nach Rollen finden Sie unter Zugriffssteuerung konfigurieren.
Einen GKE-Cluster einrichten
Verwenden Sie beim Einrichten eines neuen Google Kubernetes Engine-Clusters oder -Knotenpools das Dienstkonto, das Sie für Jenkins erstellt haben.
Console
Zum Erstellen eines Clusters mit der Google Cloud Console führen Sie die folgenden Schritte aus:
Rufen Sie in der Google Cloud Console das Artifact Registry-Menü auf.
Klicken Sie auf Cluster erstellen.
Konfigurieren Sie den Cluster wie gewünscht. Klicken Sie noch nicht auf Erstellen.
Klicken Sie im Standardknotenpool auf Weitere Optionen.
Wählen Sie im Abschnitt Sicherheit das von Ihnen erstellte Jenkins-Dienstkonto aus.
Klicken Sie auf Speichern, um das Overlay zu schließen.
Klicken Sie auf Erstellen.
gcloud
Verwenden Sie einen der folgenden Befehle, um den Cluster mit dem Jenkins-Dienstkonto zu erstellen. In den Befehlen ist PROJECT Ihre Projekt-ID.
Um einen Cluster mit dem Dienstkonto zu erstellen, führen Sie folgenden Befehl aus:
gcloud container clusters create example-cluster --service-account=jenkins-sa@PROJECT.iam.gserviceaccount.com
So erstellen Sie einen Knotenpool in einem vorhandenen Cluster:
gcloud container node-pools create example-pool --service-account=jenkins-sa@PROJECT.iam.gserviceaccount.com
Ausführliche Informationen zum Befehl finden Sie in der Dokumentation zu gcloud container clusters create.
Jenkins in GKE einrichten
Folgen Sie der Anleitung zum Einrichten von Jenkins in GKE. Verwenden Sie den Cluster, den Sie im vorherigen Abschnitt erstellt haben.
Aktualisieren Sie in Jenkins das GKE-Plug-in auf die neueste Version. Klicken Sie auf Jenkins verwalten > Plug-Ins verwalten > Updates.
Maven-Projekt einrichten
Verzweigen Sie das Maven-Beispielprojekt. im GitHub-Repository der Jenkins-Dokumentation.
Klonen Sie das verzweigte Repository.
git clone git@github.com:USER_NAME/simple-java-maven-app.git
Richten Sie eine neue Pipeline in der Jenkins-Benutzeroberfläche ein.
- Klicken Sie auf Neues Element.
- Wählen Sie Pipeline aus.
- Legen Sie einen Namen für die Pipeline fest und klicken Sie auf OK.
Konfigurieren Sie auf dem Tab Allgemein die folgenden Optionen im Abschnitt "Pipeline":
- Wählen Sie Pipelineskript aus SCM aus.
- Wählen Sie in der SCM-Drop-down-Liste Git aus und geben Sie dann die URL und die Anmeldedaten für das Herstellen einer Verbindung zum GitHub-Repository an.
Klicken Sie auf Speichern.
Verbindung zum Repository konfigurieren
Konfigurieren Sie Jenkins mit dem Repository und den Anmeldedaten zum Herstellen einer Verbindung zum Repository.
Fügen Sie das Repository zum Maven-Datei
pom.xml
hinzu. Verwenden Sie den folgenden Befehl, um ein Snippet zum Hinzufügen auszugeben:gcloud artifacts print-settings mvn [--project=PROJECT] \ [--repository=REPOSITORY] [--location=LOCATION]
Dabei gilt:
- PROJECT ist die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
- REPOSITORY ist die ID des Repositorys. Wenn Sie ein Standard-Artifact Registry-Repository konfiguriert haben, wird es verwendet, wenn dieses Flag im Befehl ausgelassen wird.
- LOCATION ist der regionale oder multiregionale Standort für das Repository.
Erstellen Sie eine YAML-Datei als Pod-Vorlage für Jenkins-Agents.
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
Ändern Sie die Datei
Jenkinsfile
.pipeline { agent none stages { stage('Deploy') { steps { agent { kubernetes { label 'mavenpod' yamlFile 'jenkins/maven-pod.yaml' } } container('maven') { sh "mvn -B clean deploy" } } } } }
Build starten
Übertragen Sie die vorgenommenen Änderungen per Push in der GitHub-Projekt.
git add . && git commit -m "Configure my Jenkins pipeline" && git push
Starten Sie in der Jenkins-Benutzeroberfläche einen neuen Build für die Anwendung in Ihrem Maven-Beispielprojekt.
Wenn der Build erfolgreich abgeschlossen ist, werden die Artefakte dem von Ihnen erstellten Java-Paket-Repository von Artifact Registry hinzugefügt.
Führen Sie den folgenden Befehl aus, um die Pakete im Repository aufzulisten:
gcloud artifacts packages list --repository=mvn-jenkins --location=LOCATION
Die Ausgabe sieht dann in etwa so aus:
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