[Docker implementiert Testbereitstellung CI/CD----freier Stil und Pipeline-CD-Betrieb (6)]

12. CD-Betrieb im freien Stil

        Jetzt müssen wir den Code für das aktuelle Projekt in GitLab ändern 主干分支 origin/master 上的代码打上一个 Tag,例如 v1.0.0。und ihn dennoch an den Hauptzweig-Ursprung/Master von GitLab senden. 此时再给项目打上一个 Tag, 例如 v2.0.0。Auf diese Weise wird der Hauptzweig-Ursprung/Master des Hellojenkins-Projekts mit zwei Tags markiert.
        Jenkins kann Projekte separat basierend auf verschiedenen Tags des Codes am Ursprung/Master des Stammzweigs erstellen. Implementieren Sie Continuous Delivery und Continuous Deployment von Projekten.

Version V1.0.0 veröffentlichen

Ändern Sie den Code und drücken Sie

Fügen Sie hier eine Bildbeschreibung ein

Markieren Sie das Projekt in GitLab

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

Version V2.0.0 veröffentlichen

Die Schritte sind die gleichen wie oben, werden hier jedoch nicht demonstriert.

Fügen Sie hier eine Bildbeschreibung ein

Jenkins-Konfigurations-Tag-Parameter

        Da die Projekte in GitLab über Tags verfügen tag 标签, muss Jenkins den Benutzer beim Erstellen des Projekts auswählen lassen, welches Tag-Projekt erstellt werden soll. Daher müssen Sie eine in Jenkins Git 参数 tagals Benutzeroption konfigurieren.

Git-Argumente hinzufügen

Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

Checkout-Befehl hinzufügen

Scrollen Sie dann auf der aktuellen Seite weiter nach unten und suchen Sie nach Build Steps.

Fügen Sie hier eine Bildbeschreibung ein

        Klicken Sie dann auf die drei Balken in der oberen linken Ecke, ziehen Sie sie nach oben, git checkout $hjtagwas bedeutet, dass Sie zur angegebenen Beschriftung wechseln, und Sie können den Effekt später sehen

Fügen Sie hier eine Bildbeschreibung ein

Ändern Sie die Konfiguration des Build-Befehls

        Ziehen Sie dann die aktuelle Seite weiter nach unten, um Build Steps den von Zhongyuan hinzugefügten Build-Befehl zu finden. $hjtag Fügen Sie Variablenverweise zu allen Befehlen hinzu, die eine Spiegelung beinhalten . Dann anwenden und speichern.

Fügen Sie hier eine Bildbeschreibung ein

Ändern Sie die SSH-Konfiguration

Send build artifacts over SSH Scrollen Sie dann auf         der aktuellen Seite weiter nach unten, suchen Sie nach „Post-Build Operations“ Exec commandund codieren Sie die Originalversion fest latest 修改为$hjtag.

Fügen Sie hier eine Bildbeschreibung ein

Stellen Sie v1.0.0 bereit

Projekt umbauen

        Klicken Sie auf der Startseite der Aufgabe Build with Parameters erneut auf Projekt erstellen und stellen Sie fest, dass hjtag Optionen hinzugefügt wurden. Entscheiden Sie sich, hier V1.0.0 zu bauen

Fügen Sie hier eine Bildbeschreibung ein

Build-Ergebnis

Ein Spiegel von v1.0.0 wurde zu Harbor hinzugefügt.

Fügen Sie hier eine Bildbeschreibung ein

Das v1.0.0-Image wird dem Zielserver hinzugefügt und der Container wird ausgeführt.

Fügen Sie hier eine Bildbeschreibung ein

Browserzugriff

Fügen Sie hier eine Bildbeschreibung ein

Stellen Sie v2.0.0 bereit

Projekt umbauen

        Klicken Sie auf der Startseite der Aufgabe erneut auf das Build-Projekt Build with Parameters und stellen Sie fest, dass es hinzugefügt wurde hjtag 选项. Wählen Sie „ Hier V2.0.0erstellen“ und ändern Sie die Portnummer

Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

Zugang

Fügen Sie hier eine Bildbeschreibung ein

Stellen Sie v3.0.0 bereit

Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

13. Helloworld der Pipeline-Aufgaben

        Pipelining ist für Jenkins eine Möglichkeit, den Projekterstellungsprozess zu verwalten. 其将项目的构建过程按照构建阶段进行非常清晰的划分显示. Benutzer können 可视化操作方式verschiedene Phasen des Bauprozesses einfach anzeigen und verwalten.

Hallo Welt

Erstellen Sie eine neue Pipeline-Aufgabe

Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

Sobald Sie auf „Jetzt erstellen“ klicken, wird die Bühnenansicht angezeigt.

Fügen Sie hier eine Bildbeschreibung ein

Projektskript ändern

        Um das Skript besser zu verstehen, wird hier das Skript des Hello Workd-Projekts geändert.

Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

Wartungsskript für den SCM-Modus

       SCM (Software Configuration Management) bezieht sich 软件配置管理auf die Verwaltung und Koordination von Code, Dokumenten und anderen zugehörigen Elementen im Softwareentwicklungsprozess.

Hängen Sie die Jenkins-Datei an den Code an

        Jedes zu erstellende Projekt piple 方式进行构建管理muss über eines verfügen 构建脚本. Wenn die SCM-Skriptwartungsmethode übernommen wird, wird der Name der Skriptdatei standardmäßig verwendet Jenkinsfile.
        Hängen Sie eine Datei mit dem Namen Jenkinsfile an das Stammverzeichnis des Projekts in Idea an. Kopieren Sie dann den ursprünglichen Skriptinhalt in diese Datei. Um den Unterschied zu verdeutlichen, finden Sie hier eine einfache Änderung des Skriptinhalts.

pipeline {
    
    
    agent any

    stages {
    
    
        stage('阶段one') {
    
    
            steps {
    
    
                echo '阶段one构建成功 ---> SUCCESS'
            }
        }
        stage('阶段two') {
    
    
            steps {
    
    
                echo '阶段two构建成功 ---> SUCCESS'
            }
        }
        stage('阶段three') {
    
    
            steps {
    
    
                echo '阶段three构建成功 ---> SUCCESS'
            }
        }

    }
}

Fügen Sie hier eine Bildbeschreibung ein

Übertragen Sie Änderungen an GitLab

Fügen Sie hier eine Bildbeschreibung ein

        Dann können Sie eine weitere Jenkins-Datei auf der GitLab-Projekthomepage sehen. Kopieren Sie dann die http-Adresse des Projekts.
Fügen Sie hier eine Bildbeschreibung ein

Jenkins-Konfiguration

       Geben Sie in der „Konfiguration“ der Pipeline-Aufgabe in Jenkins , ein 流水线选择 SCM 方式und SCM 选择 Gitfügen Sie dann GitLab 仓库地址die Kopie hier ein

Fügen Sie hier eine Bildbeschreibung ein

neu aufbauen

        Nach dem sofortigen Wiederaufbau werden Sie feststellen, dass zusätzlich zu den aktualisierten Namen dieser Etappen eine neue Etappe hinzugefügt wurde Checkout SCM,即从 SCM 中检出脚本.

Fügen Sie hier eine Bildbeschreibung ein

14. Pipeline-Management hellojenkins

        Jetzt müssen wir das vorherige hellojks-Projekt über die Pipeline erstellen und verwalten. Also, 首先需要修改 Idea 中 的 Jenkinsfile 文件内容,然后再提交到 GitLab.

pipeline {
    
    
    agent any

    stages {
    
    
        stage('从Gitlab拉取代码') {
    
    
            steps {
    
    
                echo '从Gitlab拉取代码 ---> SUCCESS'
            }
        }
        stage('将项目打为jar包') {
    
    
            steps {
    
    
                echo '将项目打为jar包 ---> SUCCESS'
            }
        }
        stage('代码质量检测') {
    
    
            steps {
    
    
                echo '代码质量检测 ---> SUCCESS'
            }
        }
        stage('构建并推送镜像到Harbor') {
    
    
             steps {
    
    
                echo '构建并推送镜像到Harbor ---> SUCCESS'
            }
        }
        stage('通知目标服务器') {
    
    
             steps {
    
    
                echo '通知目标服务器 ---> SUCCESS'
            }
         }

    }
}

Fügen Sie hier eine Bildbeschreibung ein

neu aufbauen

        Erstellen Sie die hello_pipeline-Aufgabe in Jenkins neu.

Fügen Sie hier eine Bildbeschreibung ein

Code von GitLab abrufen

        Definition Git参数: Definieren Sie einen Git-Parameter in der Pipeline-Aufgabe in Jenkins, der noch veröffentlicht wird tag.

Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

Pipeline-Syntax

        Wie definiere ich bestimmte Befehlsanweisungen in der Pipeline-Skriptdatei, um “从 GitLab 位取代码”“将项目 打为 jar 包”Aufgaben zu erfüllen wie?
        Die Pipeline-Skriptdatei hat ihre eigene spezielle Syntax. Durch die Pipeline-Syntax in der aktuellen Pipeline-Aufgabe können jedoch automatisch Skriptanweisungen generiert werden, die der Pipeline-Skriptsyntax entsprechen.

Fügen Sie hier eine Bildbeschreibung ein

Skriptbefehl generieren

Als nächstes werden wir die Pipeline-Syntax verwenden, um die Anweisung „Pull code from GitLab“ zu generieren.

Kopieren Sie zunächst die Projektadresse aus dem GitLab-Projekt.

Fügen Sie hier eine Bildbeschreibung ein

        Wählen Sie dann die Pipeline-Syntax in Jenkins aus “checkout:Check out from version control”und fügen Sie die kopierte GitLab-Projektadresse darin ein Repository URL.

Fügen Sie hier eine Bildbeschreibung ein

        Klicken Sie auf „Pipeline-Skript generieren“, um im Textfeld unten automatisch die entsprechende Skriptanweisung zu generieren.

Fügen Sie hier eine Bildbeschreibung ein

Jenkinsfile aktualisieren

        Kopieren Sie das generierte Pipeline-Skript, schreiben Sie es in Idea 中的 Jenkinsfile 的相应 stage{}中und senden Sie es an GitLab.

Fügen Sie hier eine Bildbeschreibung ein

neu aufbauen

Erstellen Sie die Aufgabe neu und stellen Sie fest, dass Sie die erstellte Version auswählen können.

Fügen Sie hier eine Bildbeschreibung ein

Klicken Sie in der Phase „Code abrufen“ auf Protokolle, um die abgerufenen Protokolle anzuzeigen.

Fügen Sie hier eine Bildbeschreibung ein

Machen Sie aus dem Projekt ein JAR-Paket

Skriptbefehl generieren

        Generieren Sie die Skriptanweisung „Projekt in ein JAR-Paket umwandeln“ mithilfe der Pipeline-Skriptsyntax in Jenkins

Fügen Sie hier eine Bildbeschreibung ein

Jenkinsfile aktualisieren

        Kopieren Sie das generierte Pipeline-Skript und schreiben Sie es an Idea 的 Jenkinsfile 的相应 stage{}中,submit.

Fügen Sie hier eine Bildbeschreibung ein

neu aufbauen

        Strukturieren Sie die Aufgabe neu und “将项目打为 jar 包”阶段klicken Sie dann auf die oberste Ebene Logs, um sie anzuzeigen maven 构建的日志.
Fügen Sie hier eine Bildbeschreibung ein

Überprüfung der Codequalität

Skriptbefehl generieren

        Generieren Sie Skriptanweisungen zur „Codequalitätsprüfung“ mithilfe der Pipeline-Skriptsyntax in Jenkins.

Fügen Sie hier eine Bildbeschreibung ein

Jenkinsfile aktualisieren

        Kopieren Sie das generierte Pipeline-Skript und schreiben Sie es an Idea 的 Jenkinsfile 的相应 stage{}中,submit.
Fügen Sie hier eine Bildbeschreibung ein

neu aufbauen

        Erstellen Sie die Aufgabe neu und Sie “通过 SonarQube 进行代码检测”阶段中 点击 Logskönnen sie dann auf der obersten Ebene sehen SonarQube 代码检测的日志.

Fügen Sie hier eine Bildbeschreibung ein

        Anschließend können Sie ein neu hinzugefügtes Projekt auf der SonarQube-Verwaltungsseite sehen hello_pipeline .

Fügen Sie hier eine Bildbeschreibung ein

Erstellen Sie das Image und übertragen Sie es an Harbor

Definieren Sie Umgebungsvariablen in Jenkinsfile

        Diese Variablen werden in Idea zur Jenkins-Datei hinzugefügt und 环境变量in den später generierten Skriptbefehlen verwendet.

 environment {
    
    
        harbor_user='admin'
        harbor_password='Harbor12345'
        harbor_host='192.168.40.138:8888'
        harbor_repo='jks'

    }

Skriptbefehl generieren

        Wird über die Pipeline-Skriptsyntax in Jenkins generiert “推送镜像到 Harbor”的脚本语句. Wird in Skriptanweisungen verwendet Jenkinsfile 中定义的环境变量.

[Die Übertragung des externen Link-Bildes ist fehlgeschlagen. Die Quellseite verfügt möglicherweise über einen Anti-Leeching-Mechanismus. Es wird empfohlen, das Bild zu speichern und direkt hochzuladen (img-DzTj8Hmi-1691236468832)Fügen Sie hier eine Bildbeschreibung ein

Hinweis: Dies ist das JAR-Paket im Zielverzeichnis, es gibt keinen erneuten Screenshot.

mv target/*.jar docker/
cd docker
docker build -t ${JOB_NAME}:${ptag} .
docker login -u ${harbor_user} -p ${harbor_password} ${harbor_host}
docker tag ${JOB_NAME}:${ptag} ${harbor_host}/${harbor_repo}/${JOB_NAME}:${ptag}
docker image prune -f
docker push ${harbor_host}/${harbor_repo}/${JOB_NAME}:${ptag}

Jenkinsfile aktualisieren

        Kopieren Sie das generierte Pipeline-Skript und schreiben Sie es an Idea 的 Jenkinsfile 的相应 stage{}中,submit.
Fügen Sie hier eine Bildbeschreibung ein

neu aufbauen

        Erstellen Sie die Aufgabe neu, und dann “构建镜像并推送到 Harbor”阶段中点 击 Logskönnen Sie auf der obersten Ebene das Protokoll zum Verschieben des Bilds nach Harbor sehen.
Fügen Sie hier eine Bildbeschreibung ein

Zu diesem Zeitpunkt Jenkins主机können Sie hello_pipeline das angezeigte Bild sehen.

Fügen Sie hier eine Bildbeschreibung ein

        Überprüfen Sie zu diesem Zeitpunkt die Seite der Hafenverwaltung und Sie können sie sehen jks 项目中新增加了 hello_pipeline 的仓库, 且仓库中具有 v1.0.0 的镜像.
Fügen Sie hier eine Bildbeschreibung ein

Zielserver benachrichtigen

Portnummernparameter hinzufügen

        Um Benutzer zu aktivieren 随时指定容器对外暴露的参数, befindet sich dies in „Konfiguration“ unter der aktuellen Aufgabe in Jenkins “参数化构建过程”中添加一个字符参数.

Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

Skriptbefehl generieren

        Wird über die Pipeline-Skriptsyntax in Jenkins generiert “通知目标服务器执行 deploy 脚本”的脚本语句. wählen sshPublisher:Send build artifacts over SSH,并从中找到目标服务器.

Fügen Sie hier eine Bildbeschreibung ein

        Geben Sie dann im Folgenden Exec commandden auszuführenden Befehl ein, um ein Pipeline-Skript zu generieren.

Fügen Sie hier eine Bildbeschreibung ein

deploy.sh $harbor_host $harbor_repo $JOB_NAME $ptag 8080 $export_port

Jenkinsfile aktualisieren

        Kopieren Sie das generierte Pipeline-Skript und Idea 的 Jenkinsfile 的相应 stage{}中schreiben Sie es in GitLab.

Fügen Sie hier eine Bildbeschreibung ein

neu aufbauen

        Erstellen Sie die Aufgabe neu, und dann “通知目标服务器”阶段中点击 Logskönnen Sie auf der obersten Ebene das Protokoll zum Verschieben des Bilds nach Harbor sehen.

Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

        Überprüfen Sie das Image auf dem Zielserver und stellen Sie fest, dass das entsprechende Image nicht aus dem Hafen gezogen wurde.

Fügen Sie hier eine Bildbeschreibung ein

Tatsächlich wird es durch Variablen in doppelten Anführungszeichen verursacht

Fügen Sie hier eine Bildbeschreibung ein

Erneut neu aufbauen und erfolgreich ziehen

Fügen Sie hier eine Bildbeschreibung ein

Erfolgreicher Browserzugriff

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

Supongo que te gusta

Origin blog.csdn.net/qq_52589631/article/details/132123916
Recomendado
Clasificación