Inhaltsverzeichnis
- 12. CD-Betrieb im freien Stil
- 13. Helloworld der Pipeline-Aufgaben
- 14. Pipeline-Management hellojenkins
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
Markieren Sie das Projekt in GitLab
Version V2.0.0 veröffentlichen
Die Schritte sind die gleichen wie oben, werden hier jedoch nicht demonstriert.
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 参数 tag
als Benutzeroption konfigurieren.
Git-Argumente hinzufügen
Checkout-Befehl hinzufügen
Scrollen Sie dann auf der aktuellen Seite weiter nach unten und suchen Sie nach Build Steps.
Klicken Sie dann auf die drei Balken in der oberen linken Ecke, ziehen Sie sie nach oben, git checkout $hjtag
was bedeutet, dass Sie zur angegebenen Beschriftung wechseln, und Sie können den Effekt später sehen
Ä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.
Ä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 command
und codieren Sie die Originalversion fest latest 修改为$hjtag
.
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
Build-Ergebnis
Ein Spiegel von v1.0.0 wurde zu Harbor hinzugefügt.
Das v1.0.0-Image wird dem Zielserver hinzugefügt und der Container wird ausgeführt.
Browserzugriff
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.0
erstellen“ und ändern Sie die Portnummer
Zugang
Stellen Sie v3.0.0 bereit
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
Sobald Sie auf „Jetzt erstellen“ klicken, wird die Bühnenansicht angezeigt.
Projektskript ändern
Um das Skript besser zu verstehen, wird hier das Skript des Hello Workd-Projekts geändert.
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'
}
}
}
}
Übertragen Sie Änderungen an GitLab
Dann können Sie eine weitere Jenkins-Datei auf der GitLab-Projekthomepage sehen. Kopieren Sie dann die http-Adresse des Projekts.
Jenkins-Konfiguration
Geben Sie in der „Konfiguration“ der Pipeline-Aufgabe in Jenkins , ein 流水线选择 SCM 方式
und SCM 选择 Git
fügen Sie dann GitLab 仓库地址
die Kopie hier 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 中检出脚本
.
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'
}
}
}
}
neu aufbauen
Erstellen Sie die hello_pipeline-Aufgabe in Jenkins neu.
Code von GitLab abrufen
Definition Git参数
: Definieren Sie einen Git-Parameter in der Pipeline-Aufgabe in Jenkins, der noch veröffentlicht wird tag
.
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.
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.
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
.
Klicken Sie auf „Pipeline-Skript generieren“, um im Textfeld unten automatisch die entsprechende Skriptanweisung zu generieren.
Jenkinsfile aktualisieren
Kopieren Sie das generierte Pipeline-Skript, schreiben Sie es in Idea 中的 Jenkinsfile 的相应 stage{}中
und senden Sie es an GitLab.
neu aufbauen
Erstellen Sie die Aufgabe neu und stellen Sie fest, dass Sie die erstellte Version auswählen können.
Klicken Sie in der Phase „Code abrufen“ auf Protokolle, um die abgerufenen Protokolle anzuzeigen.
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
Jenkinsfile aktualisieren
Kopieren Sie das generierte Pipeline-Skript und schreiben Sie es an Idea 的 Jenkinsfile 的相应 stage{}中
,submit.
neu aufbauen
Strukturieren Sie die Aufgabe neu und “将项目打为 jar 包”阶段
klicken Sie dann auf die oberste Ebene Logs
, um sie anzuzeigen maven 构建的日志
.
Überprüfung der Codequalität
Skriptbefehl generieren
Generieren Sie Skriptanweisungen zur „Codequalitätsprüfung“ mithilfe der Pipeline-Skriptsyntax in Jenkins.
Jenkinsfile aktualisieren
Kopieren Sie das generierte Pipeline-Skript und schreiben Sie es an Idea 的 Jenkinsfile 的相应 stage{}中
,submit.
neu aufbauen
Erstellen Sie die Aufgabe neu und Sie “通过 SonarQube 进行代码检测”阶段中 点击 Logs
können sie dann auf der obersten Ebene sehen SonarQube 代码检测的日志
.
Anschließend können Sie ein neu hinzugefügtes Projekt auf der SonarQube-Verwaltungsseite sehen hello_pipeline
.
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)
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.
neu aufbauen
Erstellen Sie die Aufgabe neu, und dann “构建镜像并推送到 Harbor”阶段中点 击 Logs
können Sie auf der obersten Ebene das Protokoll zum Verschieben des Bilds nach Harbor sehen.
Zu diesem Zeitpunkt Jenkins主机
können Sie hello_pipeline
das angezeigte Bild sehen.
Überprüfen Sie zu diesem Zeitpunkt die Seite der Hafenverwaltung und Sie können sie sehen jks 项目中新增加了 hello_pipeline 的仓库, 且仓库中具有 v1.0.0 的镜像
.
Zielserver benachrichtigen
Portnummernparameter hinzufügen
Um Benutzer zu aktivieren 随时指定容器对外暴露的参数
, befindet sich dies in „Konfiguration“ unter der aktuellen Aufgabe in Jenkins “参数化构建过程”中添加一个字符参数
.
Skriptbefehl generieren
Wird über die Pipeline-Skriptsyntax in Jenkins generiert “通知目标服务器执行 deploy 脚本”的脚本语句
. wählen sshPublisher:Send build artifacts over SSH,并从中找到目标服务器
.
Geben Sie dann im Folgenden Exec command
den auszuführenden Befehl ein, um ein Pipeline-Skript zu generieren.
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.
neu aufbauen
Erstellen Sie die Aufgabe neu, und dann “通知目标服务器”阶段中点击 Logs
können Sie auf der obersten Ebene das Protokoll zum Verschieben des Bilds nach Harbor sehen.
Überprüfen Sie das Image auf dem Zielserver und stellen Sie fest, dass das entsprechende Image nicht aus dem Hafen gezogen wurde.
Tatsächlich wird es durch Variablen in doppelten Anführungszeichen verursacht
Erneut neu aufbauen und erfolgreich ziehen
Erfolgreicher Browserzugriff