Umgebungsvorbereitung 1. Jenkins Der obige technische Teil wurde in meinem vorherigen Artikel geschrieben Hier gibt es keine ausführliche Demonstration. Dieser Artikel konvertiert hauptsächlich zusammenhängend den Quellcode des Microservice-Projekts -> sendet ihn an das Remote-Repository GitLab -> Jenkins zieht den Code von Gitlab auf den Server -> SonarQube-Codeüberprüfung -> Maven kompiliert und verpackt -> erstellt Docker-Images -> pusht in das private Harbor-Image-Repository -> stellt auf anderen Servern bereit Start 1. Das GitLab-Remote-Repository erstellt ein Microservice-Projekt 2. IDEA-Code wird zu Gitlab übertragen Der Standardordner ist korrekt und muss daher nicht geändert werden. Hinzufügen eines lokalen Repositorys Lokales Repository übermitteln Pushen des Remote-Repositorys 3. Jenkins erstellt ein Pipeline-Projekt 4. Parametrisierte Konstruktion 5. Ziehen Sie das Build-Skript des Remote-Repositorys Anwendung speichern 6. Schreiben Sie das Remote-Review-Skript sonar-project.properties Skripte erstellen1. Code abrufen Stufe('Code abrufen') { Kasse([$class: 'GitSCM', Zweige: [[name:"*/${branch}"]], doGenerateSubmoduleConfigurations: false, Erweiterungen: [], SubmoduleCfg: [], userRemoteConfigs: [[credentialsId: "${git_auth}", URL: "${git_url}"]]]) } 2. Überprüfen Sie den Code Phase('Codeüberprüfung') { //Definieren Sie das aktuelle SonarQubeScanner-Tool von Jenkins def scannerHome = tool 'SonarQube' //Referenzieren Sie die aktuelle JenkinsSonarQube-Umgebung mit SonarQubeEnv('SonarQube') { sch """ cd ${project_name}//Dies ist der definierte Optionsparameter ${scannerHome}/bin/sonar-scanner """ } } 3. Installieren Sie gemeinsame Module stage('kompilieren, gemeinsame Unterprojekte installieren') { sh "mvn -f tensquare_common Neuinstallation" } Server anzeigen 4. Microservices kompilieren und verpacken stage('Kompilieren, Microservice-Projekt verpacken') { sh "mvn -f ${project_name} sauberes Paket" } Server anzeigen Bisheriger Build-Prozess 5. Fügen Sie eine Dockerfile-Datei hinzu, um das Docker-Image-Projekt zu erstellen. #VON java:8 #VON openjdk:11-jdk-alpine VON openjdk:11 ARG JAR_FILE KOPIEREN SIE ${JAR_FILE} app.jar EXPOSE 9001 EINSTIEGSPUNKT ["java","-jar","/app.jar"] Fügen Sie jedem Microservice-Projekt ein Dockerfile-Plugin hinzu Maven <Plugin> <groupId>com.spotify</groupId> <artifactId>Dockerfile-Maven-Plugin</artifactId> <version>1.3.6</version> <Konfiguration> <repository>${Projekt.ArtefaktId}</repository> <BuildArgs> <JAR_FILE>Ziel/${project.build.finalName}.jar</JAR_FILE> </buildArgs> </Konfiguration> </plugin> Ändern Sie die Jenkinsfile-Dateidienstverpackung und fügen Sie "dockerfile:build" hinzu, um den Docker-Image-Build auszulösen stage('Kompilieren, Microservice-Projekt verpacken') { sh "mvn -f ${Projektname} sauberes Paket Dockerfile:build" } Und zum Remote-Lager pushen Jenkins-Neuaufbau Server anzeigen Docker-Bilder Image erfolgreich erstellt 6. Bild-Tagging Öffentliche Eigenschaften //Spiegelversionsnummer def tag = "latest" // URL-Adresse des Hafens def harbor_url = "192.168.0.188:9123" //Projektname der Spiegelbibliothek def harbor_project = "tensquare" stage('Microservice-Projekt kompilieren, verpacken und Image hochladen') { //Kompilieren und verpacken – Image erstellen sh "mvn -f ${project_name} clean package dockerfile:build" //Definieren Sie den Bildnamen def imageName = "${project_name}:${tag}" //Kennzeichnen Sie das Bild mit sh "docker tag ${imageName} ${harbor_url}/${harbor_project}/${imageName}" } Pushen zum Remote-Server und Erstellen von Jenkins zum Anzeigen des Server-Image 7. Übertragen Sie das Bild in das private Lager von Harbor. Hier müssen Sie Geld abheben und ein Lager auf Harbor erstellen. Geben Sie die Pipeline-Syntax ein, um die Hafensyntax zu generieren stage('Microservice-Projekt kompilieren, verpacken und Image hochladen') { //Kompilieren und verpacken – Image erstellen sh "mvn -f ${project_name} clean package dockerfile:build" //Definieren Sie den Bildnamen def imageName = "${project_name}:${tag}" //Kennzeichnen Sie das Bild mit sh "docker tag ${imageName} ${harbor_url}/${harbor_project}/${imageName}" //Bild zu Harbor übertragen mitAnmeldeinformationen([BenutzernamePasswort(AnmeldeinformationenID: "${harbor_auth}", Passwortvariable: 'Passwort', Benutzernamevariable: 'Benutzername')]) { //Bei Harbor anmelden sh "Docker-Login -u ${Benutzername} -p ${Passwort} ${Harbor_URL}" //Bild hochladen sh "docker push ${harbor_url}/${harbor_project}/${imageName}" sh „Echo-Bild-Upload erfolgreich“ } } Remote-Warehouse pushen, Jenkins remote erstellen, das in das private Warehouse gepushte Image anzeigen Remote-Push-Image erfolgreich! ! ! 8. Laden Sie das Image herunter und starten Sie das Programm. Da Sie das Image herunterladen und das Programm remote starten müssen, müssen Sie zuerst das Plug-In „Publish Over SSH“ auf Jenkins installieren, um Shell-Befehle remote zu senden. Konfigurieren des Plugins Hierbei ist zu beachten, dass die beiden Server eine Kommunikation herstellen und eine SSH-Remoteverbindung verwenden müssen. Das heißt, Jenkins verwendet SSH, um den 188-Server ferngesteuert zu betreiben und das Image abzurufen. Beim Starten der Anwendung muss der Hostserver von Jenkins den öffentlichen und den privaten Schlüssel generieren und diese dann auf den 188-Server kopieren. cd /root/.ssh Bei entsprechender Aufforderung: bash: cd: .ssh: keine solche Datei oder kein solches Verzeichnis, führen Sie ssh-Hostname aus (Ihren eigenen Hostnamen) 2. Führen Sie den Befehl aus, um öffentliche und private Schlüssel auf dem Jenkins-Hostserver zu generieren ssh-keygen -t rsa Vergleichen Sie dann Folgendes id_rsa ist der private Schlüssel id_rsa.pub ist der öffentliche Schlüssel 3. Kopieren Sie den öffentlichen Schlüssel id_rsa.pub auf den 188-Server SSH-Kopie-ID 192.168.0.188 4. Überprüfen Sie den auf den 188-Server kopierten Schlüssel 5. Testen Sie die SSH-Remoteverbindung von Jenkins Testerfolg 6. Verwenden Sie den Pipeline-Syntaxgenerator, um SSH-Befehle zu generieren In Jenkinsfile kopieren //Anwendungsbereitstellung sh "echo Anwendungsbereitstellung" sshPublisher (Herausgeber: [sshPublisherDesc (Konfigurationsname: '188', Übertragungen: [sshTransfer (cleanRemote: false, schließt aus: '', execCommand: "/data/Jenkins_shell/deploy.sh $harbor_url $harbor_project $project_name $tag $port", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', Quelldateien: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, ausführlich: false)]) /data/Jenkins_shell/deploy.sh Dieser Pfad verweist auf eine Skriptdatei, die zum Betreiben des Docker-Containers verwendet wird. Dieses Skript finden Sie weiter unten. $harbor_url Die private Repository-Adresse des Images $harbor_project Der Projektname im privaten Repository $project_name Der Projektname $tag Die Version des Images, die abgerufen werden soll $port Dieser Parameter muss auch im Jenkins-Build angegeben werden. Diese Parameter entsprechen eins zu eins den Parametern in dieser Datei. #!/bin/sh #Empfange externen Parameter harbor_url=$1 Hafenprojekt = $2 Projektname=$3 tag=$4 Hafen = $ 5 Bildname = $Harbor_URL/$Harbor_Projekt/$Projektname:$Tag echo "$Bildname" #Überprüfen Sie, ob der Container existiert. Wenn ja, löschen Sie ihn. containerId=`docker ps -a | grep -w ${project_name}:${tag} | awk '{print $1}'` wenn [ "$containerId" != "" ] ; dann #Stoppen Sie den Container docker stop $containerId #Löschen Sie den Container docker rm $containerId echo "Container erfolgreich gelöscht" fi #Abfrage, ob das Image existiert, und wenn ja, lösche es imageId=`docker images | grep -w $project_name | awk '{print $3}'` wenn [ "$imageId" != "" ] ; dann #Löschen Sie das Bild docker rmi -f $imageId echo "Bild erfolgreich gelöscht" fi # Melden Sie sich bei Harbor an Docker-Login -u Benutzer -p 877425287Benutzer $harbor_url # Laden Sie das Image herunter docker pull $imageName # Starten Sie den Container docker run -di -p $port:$port $imageName echo "Container erfolgreich gestartet" Jenkins-Eingabe hinzufügen Senden Sie den Code und beginnen Sie mit dem Erstellen Erfolg aufbauen Codeüberprüfung SonarQube Spiegel-Repository Harbor 188 Spiegelbild vom Remote-Server abgerufen Überprüfen des Startstatus des Containers Zugriff auf den Testcontainer Dies ist das Ende dieses Artikels über das Verpacken von Microservices mit Jenkins zum Erstellen und Ausführen von Docker-Images. Weitere Informationen zum Verpacken und Erstellen von Docker-Images mit Jenkins finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
Privot ist die Zwischentabelle von Viele-zu-viele...
Im vorherigen Artikel wurde die MySql-Abfrageanwe...
Manchmal ist die Seite sehr lang und benötigt ein...
In diesem Artikel wird der spezifische Code von V...
Inhaltsverzeichnis 1. Zertifikat generieren 2. Ak...
In vielen Projekten ist es notwendig, die Funktio...
Inhaltsverzeichnis Schreiben Sie vor Geschäftscod...
Inhaltsverzeichnis 1. Kommunikation zwischen Elte...
Der Paging-Effekt wird zu Ihrer Information im Vu...
Das <input>-Tag Das <input>-Tag wird ...
1. Quellenliste sichern Die Standardquelle von Ub...
Im Projekt (nodejs) müssen mehrere Daten gleichze...
Wirkung (Quellcode am Ende): erreichen: 1. Tags d...
docker-compose-monitor.yml Version: '2' N...
Ich habe viele Artikel online durchsucht, aber ke...