Verwenden der Docker+Jenkins+Python3-Umgebung zum Erstellen eines äußerst detaillierten Tutorials

Verwenden der Docker+Jenkins+Python3-Umgebung zum Erstellen eines äußerst detaillierten Tutorials

Vorwort:

Nachdem die Automatisierung geschrieben wurde, muss sie jeden Tag auf dem Server ausgeführt werden. Ich bin auf ein solches Problem gestoßen. Der Jenkins-Container wurde in Docker installiert, und dann wurde der Code aus Git gezogen und festgestellt, dass sich der Code im Verzeichnis des Jenkins-Containers befand. Beim Ausführen wurde angezeigt, dass die Python-Umgebung und die Bibliotheken von Drittanbietern nicht installiert waren.

Es gibt drei Lösungen:

Die erste Methode: Mounten Sie beim Starten des Jenkins-Containers das Containerverzeichnis zur Ausführung im Hostverzeichnis (diese Methode kann nicht implementiert werden).

Die zweite Methode: Erstellen Sie einen lokalen Knoten auf Jenkins, ziehen Sie den Code dorthin und führen Sie das lokale Projekt aus (die Verwendung auf dem lokalen Computer ist bequemer, die Einschränkungen sind jedoch relativ gering).

Die dritte Methode: Verpacken Sie das Jenkins-Image neu, installieren Sie die Python3-Umgebung im Jenkins-Image und führen Sie das Projekt im Container aus (die Schritte sind umständlich, werden aber in Zukunft dauerhaft verwendet).

Die erste und zweite Methode erfordern, dass Docker- und Jenkins-Images auf dem Server installiert sind.

1. Docker installieren

Installieren Sie Docker https://www.runoob.com/docker/docker-tutorial.html

2. Installieren Sie das Jenkisn-Image

1. Suchen Sie das Bild auf Docker Docker Search Jenkins
  
2. Laden Sie das benötigte Image herunter: docker pull jenkinsci/blueocean
  
3. Überprüfen Sie, ob die Docker-Images erfolgreich heruntergeladen wurden
  
4. Starten Sie das heruntergeladene Image docker run -d -p 10240:8080 -p 10241:50000 -v /jenkins_autotest/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai --name jenkint_test jenkinsci/blueocean
 
#Beschreibung: docker run -d: Container im Hintergrund ausführen -p: Portzuordnung des Containers angeben -p 10240:8080 bedeutet, den Port 8080 des Containers dem Port 10240 des Hosts zuzuordnen. Um mehrere Ports zuzuordnen, verwenden Sie -p 8082:8080 -p 8083:8081
   -v: Hostverzeichnis und Verzeichnis im Docker-Container mounten /Users/songpeilun/jenkins_home absolutes lokales Hostverzeichnis; /var/jenkins_home Containerverzeichnis (Containerverzeichnis lokal mounten)
   -v:/etc/localtime:/etc/localtime Lokale Zeit und Containerzeit synchronisieren -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai Containerzeit auf Shanghai-Zeit einstellen (sonst unterscheiden sich Containerzeit und lokale Zeit um 8 Stunden)
   --name jenkint_test Setzt den Namen des Containers auf jenkinsci/blueocean. Wählen Sie den Image-Namen aus, um den Container zu starten (das neueste wird zum Standard-Image hinzugefügt. Wenn Sie das von Ihnen erstellte Image abrufen, fügen Sie Ihre eigene Versionsnummer hinzu: jenkinsci/blueocean: Versionsnummer-TAG).

   ⚠️ Achten Sie beim Einbinden eines lokalen Verzeichnisses im Containerverzeichnis darauf, dem lokalen Ordner Berechtigungen zu erteilen: chmod 777 jenkins_home

Geben Sie Docker-Images ein, um zu überprüfen, ob das Jenkins-Image erfolgreich installiert wurde

Docker-Bilder 

Überprüfen Sie, ob der Container ausgeführt wird

Docker PS

Es ist ersichtlich, dass im Docker bereits ein laufender Container Jenkins vorhanden ist

Dies bedeutet, dass Jenkins installiert wurde und Sie Jenkins jetzt starten können.

3. Starten Sie Jenkins

Geben Sie die Server-IP + Portnummer im Browser ein http://47.99.98.250:10240/ Wenn Sie nicht darauf zugreifen können, schalten Sie bitte die System-Firewall aus

Es gibt zwei Möglichkeiten, das Passwort anzuzeigen. Die erste besteht darin, es im Container des Servers anzuzeigen, und die zweite darin, es im zugeordneten lokalen Verzeichnis anzuzeigen (vorausgesetzt, Sie haben das lokale Verzeichnis zugeordnet).

Okay, Jenkins wurde hier installiert.

Zeigen Sie das Kennwort im Container an: cat /var/jenkins_home/secrets/initialAdminPassword
Lokales Verzeichnis zuordnen: cat /Users/songpeilun/jenkins_home/secrets/initialAdminPassword
#/Users/songpeilun/jenkins_home Adresse des lokalen Mapping-Verzeichnisses

3. Methode 2: Erstellen Sie einen neuen lokalen Knoten

Lassen Sie uns über die spezifische Logik der Methode 2 sprechen. Sie erstellt hauptsächlich einen neuen lokalen Knoten von Jenkins und verwendet den neuen Knoten, um den Code auf Git auf den lokalen (Host-)Knoten zu ziehen, um den Code auszuführen.

Diese Methode eignet sich hauptsächlich für eine lokale Umgebung, in der bereits eine Python3-Umgebung vorhanden ist. Sie können die Automatisierung direkt ausführen und mithilfe der lokalen kontinuierlichen Integration tägliche Automatisierungsberichte erstellen (Nachteile: Da der lokale Knoten die Adresse des Hostcomputers als IP verwendet, müssen Sie den Computer und die Jenkins-Adresse jedes Mal öffnen und das externe Netzwerk kann nicht darauf zugreifen. Die Einschränkung ist gering).

Schritt 1: Installieren Sie das SSH-Agent-Plugin in Jenkins

Installieren Sie die SSH-Agent-Plugin-Systemeinstellungen - Plugin-Verwaltung - Optionale Plugins und geben Sie die SSH-Agent-Suche ein

Schritt 2: Neue Knoten hinzufügen

Systemeinstellungen – Knotenverwaltung – Neuer Knoten (Knotennamen dürfen nicht wiederholt werden)

veranschaulichen:

Knotenname: Verwenden Sie englische Zeichen anstelle von chinesischen Zeichen (beim Auswählen eines Knotens während der Projekterstellung wird eine Warnung angezeigt!)

Knotenbeschreibung: optional

Anzahl der Executoren: Die Anzahl der gleichzeitig laufenden Knoten

Remote-Arbeitsverzeichnis: Das lokale Arbeitsverzeichnis (/Users/songpeilun/jenkins) erfordert einen Benutzer mit Root-Rechten, der über volle Berechtigungen für diese Datei verfügt.

Schlagwörter: optional

Verwendung: Verwenden Sie diesen Knoten, wann immer möglich

Startmethode: Agenten über SSH starten

Host: Die Netzwerk-IP-Adresse dieses Computers (Netzwerk-Netzwerkeinstellungen-IP)

Anmeldeinformationen: Wählen Sie das lokale Konto und das Passwort aus, die hinzugefügt wurden

Host Key Verification Strategy: Nicht verifizierende Verifizierungsstrategie

Verfügbarkeit: Versuchen Sie, den Agenten online zu halten

Knoteneigenschaften --git: Git-Installationspfad

Starten Sie dann den Knoten. Der erfolgreiche Start wird angezeigt. Überprüfen Sie dann, ob sich im lokalen Hostverzeichnisordner eine Knotendatei befindet.

3. Methode 3: Python 3-Umgebung im Container installieren

Lassen Sie uns über die spezifische Logik von Methode 3 sprechen. Sie führt hauptsächlich den Code im Container aus. Git zieht den Code standardmäßig ohne Zuordnung in den Container und führt den Code direkt im Container aus (Vorteile: belegt nicht die Ressourcengröße des Servers und kann jederzeit gestartet werden; erfordert keine lokalen Startdienste und kann die Serveradresse direkt verwenden. Nachteile: Die Installation ist etwas mühsam 😈)

Schritt 1: Sie müssen den Jenkins-Container betreten  

docker exec -itu Root-Container-ID /bin/sh

Es gibt zwei Möglichkeiten, Python3 zu installieren

1. Weget-Installation (nicht empfohlen, im Grunde dasselbe wie die aktuelle Installationsmethode, Sie müssen zuerst einige abhängige Pakete installieren, z. B. gcc usw.)

2.apk add-Installation (diese Version ist alpin: apk add, die schnell installiert werden kann)

Achten Sie abschließend auf das Problem mit der Systemversion:

Wenn es CentOS ist, ist es Yum; wenn es Ubuntu ist, ist es Apt-get; wenn es Alpine ist, ist es APK

Schritt 2: Installieren Sie Python3 mit APK

cd /etc/apk/
echo "https://mirrors.ustc.edu.cn/alpine/v3.6/main/" > Repositorien
echo "https://mirrors.ustc.edu.cn/alpine/v3.6/community/" >> Repositorien

Aktualisieren Sie die APK-Quelle, damit der Download schneller ist

APK-Aktualisierung

Schritt 3: Verwenden Sie apk add, um die Python3-Umgebung zu installieren

apk python3 hinzufügen

Schritt 4: pip3 aktualisieren

pip3 installieren --upgrade pip

Überprüfen Sie die Python-Umgebung python -V
Pip3 -V

Nachdem die obige Installation erfolgreich war, können Sie das Plug-In der Drittanbieterbibliothek installieren und sind damit zur Hälfte erledigt.

Installieren Sie das Plugin entsprechend den Anforderungen Ihres Projekts. Hier ist mein Projekt als Beispiel.

Schritt 5: Installieren Sie Python-Bibliotheken von Drittanbietern

Erstellen Sie zuerst die Datei requirements.txt

pip freeze > Anforderungen.txt

pip install -r Anforderungen.txt

Verwenden Sie dann vi requirements.txt, um die Datei zum Bearbeiten zu öffnen

base64-test0926==1.0.0
        PyMySQL==1.0.2
        pytest==6.2.3
        python-jenkins==1.7.0
        PyYAML==5.4.1
        redis==3.5.3
        Anfragen==2.25.1
        SQLAlchemy==1.4.10
        urllib3==1.26.4
        Rad == 0,36,2
        allure-pytest==2.8.40
        allure-python-commons==2.8.40

Die letzten beiden erfordern eine Allure-Berichtskonfiguration vor der Installation, andernfalls wird ein Fehler gemeldet.

⚠️ Wenn die Installation fehlschlägt, machen Sie sich keine Sorgen und finden Sie langsam den Grund heraus. Ich habe lange nach dem Grund gesucht, nachdem zuvor ein Fehler aufgetreten war. Es lag am fehlenden Greenlet-Plugin (ich werde Ihnen später eine Methode nennen).

Wenn keine Probleme auftreten, war die Installation erfolgreich. Sie können Ihren eigenen Code zum Testen in den Container kopieren. Wenn kein Problem vorliegt, können Sie das Image verpacken

Lokale Dateien in das Containerverzeichnis xx kopieren

Docker cp /Users/songpeilun/python_data/allure-2.13.0.zip jenkint_test:/xx-Verzeichnis

Ich verwende hier den Allure-Bericht, also muss ich ihn installieren

Schritt 6: Installieren Sie den Allure-Bericht

Allure ist ein dekomprimiertes Paket. Hier ist eines für Sie. Kopieren Sie es nach dem Herunterladen in den Container und dekomprimieren Sie es.

Link: https://pan.baidu.com/s/1JbBXOfA0j6saZh7H8RMipw Passwort: qfnv

#Entpacken Sie die Datei im Container unzip allure-2.13.0.zip

#Umgebungsvariablen konfigurieren vi /etc/profile
Fügen Sie nach PATH hinzu: $PATH:/allure-2.13.0/bin (der vollständige Pfad von Allure)
source /etc/profile Speichern und übernehmen

Schritt 7: Verifizieren Sie die Anziehungskraft

allure --version

4. Verpacken/Hochladen von Bildern

Bleiben Sie dran für weitere Updates ...

5. Konfigurieren Sie die Jenkins-Umgebung

Dies ist das Ende dieses Artikels über das superdetaillierte Tutorial zum Erstellen einer Umgebung mit Docker+Jenkins+Python3. Weitere relevante Inhalte zur Docker+Jenkins+Python3-Umgebung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die folgenden verwandten Artikel weiter. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Docker erstellt Jenkins und automatisiert die Schritte zum Verpacken und Bereitstellen von Projekten
  • Docker+Gitlab+Jenkins erstellt automatisierte Bereitstellung von Grund auf
  • Docker erstellt eine Jenkins+Maven-Plattform zum Erstellen und Bereitstellen von Code
  • Beispiel für den Aufbau eines Jenkins-Dienstes mit Docker
  • Beim Einrichten von Jenkins in einer Docker-Umgebung werden im Konsolenprotokoll beim Erstellen von Aufgaben verstümmelte chinesische Zeichen angezeigt
  • Implementierung des Jenkins-Automatisierungstools mithilfe von Docker

<<:  CSS Zurück zum Anfang Codebeispiel

>>:  10 hervorragende Web-UI-Bibliotheken/Frameworks

Artikel empfehlen

Das WeChat-Applet implementiert einen einfachen Rechner

Ein einfacher Rechner, der als Referenz in das We...

IE8 bietet eine gute Erfahrung: Aktivitäten

Heute habe ich einen kleinen Vorgeschmack auf IE8...

Installations-Tutorial zur neuesten MySQL-Version 8.0.17 mit Dekomprimierung

Ich persönlich denke, dass die dekomprimierte Ver...

Analyse und Lösung des a.getAttribute(href,2)-Problems in IE6/7

Kurzbeschreibung <br />In IE6 und 7 wird in...

CSS Paint API: Ein CSS-ähnliches Zeichenbrett

1. Canvas-Bilder als CSS-Hintergrundbilder verwen...

Detaillierte Erläuterung der Wissenspunkte zu Linux-Dateivorgängen

Verwandte Systemaufrufe für Dateioperationen erst...

Wird der Index durch MySQL ungültig?

Wird MySQLs IN den Index ungültig machen? Gewohnh...