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:
|
Beim Herunterfahren des MySQL-Servers können, abh...
Beim Schreiben von Projekten stoßen wir häufig au...
Datensortierung aufsteigend, absteigend 1. Sortie...
Schauen Sie sich zuerst den Code an Code kopieren ...
Dies ist eine ziemlich coole Funktion, die Websei...
In diesem Artikelbeispiel wird der spezifische Co...
1.17.9 Wirklich leckerer Nginx-Download-Adresse: ...
MTR steht für Mini-Transaktion. Wie der Name scho...
Inhaltsverzeichnis Vorwort $attrs Beispiel: $list...
Unten beginnt der Haupttext. 123WORDPRESS.COM Her...
Inhaltsverzeichnis Cache-Funktion in vue2 Transfo...
Als PHP7 herauskam, habe ich als Fan der neuesten...
Der detaillierte Installationsprozess von mysql5....
Vorwort Beim Schreiben von Frontend-Seiten verwen...
In diesem Artikelbeispiel wird der spezifische Ja...