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:
|
Mit dem img-Element können wir Bilder in HTML-Dok...
Inhaltsverzeichnis Überblick Funktionssignatur Op...
1. Ändern Sie die Firewall-Einstellungen und öffn...
Inhaltsverzeichnis 1. Komponenteneinführung 2. Qu...
Inhaltsverzeichnis Hintergrund 1. Gedankenanalyse...
1. Häufig verwendete höherwertige Funktionen von ...
In der Open-Source-Umfrage von Black Duck aus dem...
In diesem Artikel wird der spezifische Code von J...
Ich habe einige Qt-Schnittstellenprogramme geschr...
1. Einführung in Docker Docker wurde in der Progr...
Als Neuling, der gerade mit dem Linux-System in K...
Unterabfrageklassifizierung Klassifizierung nach ...
Verwenden Sie den folgenden Befehl, um einen Cont...
Hintergrund-Threads •Hauptthread Der Kern-Hinterg...
Inhaltsverzeichnis 1. Einführung in den V-Slot 2....