Automatisches Erstellen und Bereitstellen mit Docker+Jenkins

Automatisches Erstellen und Bereitstellen mit Docker+Jenkins

Dieser Artikel stellt die automatische Build-Bereitstellung von Docker+Jenkins vor und teilt sie mit Ihnen. Die Details sind wie folgt:

Umfeld

  • Alibaba Cloud ESC, installieren Sie Docker auf dem Hostserver und bestätigen Sie, dass Port 8080 in den Sicherheitsregeln geöffnet ist.
  • Client für Mac

Führen Sie Jenkins aus

Ausführen des Jenkins-Containers

Erstellen Sie ein Verzeichnis auf dem Host und fügen Sie Lese- und Schreibberechtigungen hinzu, damit die Jenkins-Anwendung beim Ausführen Dateien lesen und schreiben kann, zum Beispiel:

$ mkdir -p /var/jenkins_node
$ chmod 777 /var/jenkins_node

Ziehen Sie das Jenkins-Image: docker pull jenkins , die aktuelle Version ist 2.60.3 . Und führe aus:

docker run -d --name myjenkins -p 8080:8080 -p 50000:50000 -v <Ihr_Jenkins_Pfad>:/var/jenkins_home jenkins

Mounten Sie das vorherige Verzeichnis als Datenträger. Ersetzen Sie <your_jenkins> durch Ihren Verzeichnisnamen. Der Pfad muss ein absoluter Pfad sein.
Warten Sie Dutzende Sekunden und überprüfen Sie das Verzeichnis jenkins_node, um zu bestätigen, ob von der Jenkins-Anwendung generierte Dateien vorhanden sind.
Melden Sie sich zum Anzeigen unter http://you_host:8080 . Ob die Benutzeroberfläche „Erste Schritte“ angezeigt wird.

Konto und SSH-Login einrichten

Auf der Benutzeroberfläche „Erste Schritte“ benötigen Sie das Startkennwort „Jenkins entsperren“.
Das Passwort wird im Ausgabeterminal angezeigt. Sie können es gemäß den Seitenaufforderungen auch im Jenkins_Home des Containers finden.
So können Sie

Docker-Protokolle MyJenkins
# Oder geben Sie den Container ein docker exec -t myjenkins /bin/bash

Sobald Sie das Passwort haben, geben Sie es ein und installieren Sie die vorgeschlagenen Plugins.
Folgen Sie nach Abschluss den Anweisungen zum Einrichten Ihres Anmeldekontos.

Installieren Sie das Plugin „Publish Over SSH“

Startseite -> Klicken Sie auf Systemverwaltung -> Plugins verwalten -> Optionale Plugins -> Filter: ssh -> Wählen Sie das Plugin „Über SSH veröffentlichen“ und klicken Sie auf Direktinstallation.

Festlegen der Server-SSH-Informationen

Generieren Sie zunächst den RSA-Schlüssel im Container:

# Geben Sie den Container vom Host-Client ein. Der aktuelle Containername ist myjenkins. Sie können ihn auch über Docker PS anzeigen $ docker exec -it myjenkins /bin/bash
# Nach dem Betreten des Containers das .ssh-Verzeichnis erstellen und die Schlüsseldateien privater Schlüssel id_rsa und öffentlicher Schlüssel id_rsa.pub erstellen
~ mkdir ~/.ssh und cd ~/.ssh
~ ssh-keygen -t rsa
# Drücken Sie einfach weiter die Eingabetaste

Fügen Sie den öffentlichen Schlüssel zum Hostcomputer hinzu und fügen Sie die Zeichenfolge in id_rsa.pub am Ende der Datei authorized_keys hinzu. sudo service ssh restart restart
Beachten Sie, ob der SSH-Dienst auf dem Hostcomputer aktiviert ist.
Sie können den folgenden Befehl im Container-Terminal verwenden, um es dem Host hinzuzufügen. Sie können id_rsa.pub auch manuell in die Datei .ssh/authorized_keys auf dem Hostcomputer kopieren.

ssh-copy-id -i ~/.ssh/id_rsa.pub <Benutzername>@<Host>

Sie müssen die SSH-Konfigurationsdatei des Zielservers ändern, die Konfigurationsdatei ist /etc/ssh/sshd_config. Richten Sie den SSH-Server so ein, dass die Anmeldung mit einem Paar aus privatem und öffentlichem Schlüssel möglich ist, und starten Sie den SSH-Dienst dann mit dem Befehl sudo /etc/init.d/ssh restart .

Privaten Schlüssel hinzufügen
Jenkins-Homepage, Systemverwaltung -> Systemeinstellungen -> Nach unten scrollen und „Über SSH veröffentlichen“ suchen, Schlüssel und SSH-Server eingeben -> Speichern


Mit erweiterten Optionen können Sie den SSH-Server-Port und das Timeout konfigurieren. Der Test kann durchgeführt werden und zeigt, dass die Konfiguration success war.

Projektkonfiguration

Erstellen Sie zunächst eine neue Aufgabe. Geben Sie den Projektnamen ein.
Wählen Sie als Quellcodeverwaltung „Git“ und geben Sie die URL der Projektbibliothek ein. Für private Projekte ist das Hinzufügen eines Git-Kontos erforderlich.


Build-Umgebung: Wählen Sie Send files or execute commands over SSH after the build runs , wählen Sie den Server aus und fügen Sie Exec command hinzu. speichern.


# Schreiben Sie entsprechend den Anforderungen Ihres Projekts sudo docker stop <node> || true \
  && sudo docker rm <Knoten> || true \
  && cd /var/jenkins_node/workspace/<Knoten> \
  && sudo docker build --rm --no-cache=true -t <Knoten> - < Docker-Datei \
  && sudo docker run -d --name <Knoten> -p 3000:3000 -v 
  /var/jenkins_node/workspace/node:/home/project <Knoten>

Der Port ist auf 3000 eingestellt. Sie können -p 宿主機端口:容器端口auch separat festlegen. Denken Sie daran, zu bestätigen, ob die Server-Port-Berechtigung aktiviert ist.

Docker-Datei

# Schreiben Sie den FROM-Knoten entsprechend den Anforderungen Ihres Projekts
RUN mkdir -p /var/www/html/ 
Führen Sie den Befehl npm install -g yarn aus.
ARBEITSVERZEICHNIS /var/www/html
EXPOSE 3000
CMD ["npm","start"]

ps: npm install -g cnpm --registry=https://registry.npm.taobao.org

Kehren Sie zur Startseite zurück, wählen Sie das Projekt aus und erstellen Sie es jetzt. Nach erfolgreichem Abschluss können Sie das Projekt über den Port http://you_host:3000 anzeigen.

Webhook konfigurieren

Konfigurieren Sie den Webhook, um API-Tonken automatisch bereitzustellen und abzurufen: Start -> Benutzer -> Wählen Sie den aktuellen Benutzer aus -> Einstellungen -> Klicken Sie Show API Token...


Token hinzufügen: Zurück zur Startseite -> Projekt -> Konfiguration -> Build-Trigger -> „Remote-Build auslösen“ auswählen -> Inhalt von „API-Token“ in „Authentifizierungstoken“ einfügen
Melden Sie sich bei der Code-Hosting-Plattform an, suchen Sie Ihr Projekt, wählen Sie „Verwalten“, wählen Sie „Webhook“ und fügen Sie die URL im Format http://<you_host>:<port>/job/<object_name>/build?token=<API Token>

Einrichten der Jenkins-Sicherheitsrichtlinie

Home -> Systemverwaltung -> Globale Sicherheit konfigurieren ->
Aktivieren Sie in der Autorisierungsrichtlinie Allow anonymous read access .


An diesem Punkt sind die automatisierte Konstruktion und Bereitstellung abgeschlossen. Wenn Sie den Code pushen, wird er automatisch erstellt und bereitgestellt.

Bereitstellungsfehlersuche

Es gibt keine größeren Probleme mit Code-Push und Webhook und Sie können nichts falsch machen, wenn Sie den Beispielen folgen.
Bei den Fehlern im Container handelt es sich um Probleme beim Erstellen und Ausführen des Images sowie um Probleme bei der Kommunikation zwischen den Containern.

  • Image-Erstellung: Sehen Sie sich die Jenkins-Homepage an --> Sehen Sie sich das Projekt an --> Neuester構建歷史--> Console Output anzeigen, um控制臺輸出anzuzeigen. Hier können Sie sehen, welcher Schritt schief gelaufen ist. Im Allgemeinen ist Sending build context to Docker daemon ein Jenkins-Befehlsproblem und dann ein Dockerfile-Problem.
  • Image wird ausgeführt: Wenn die Konsole anzeigt, dass das Image erfolgreich erstellt wurde (Sie können es auch in docker images anzeigen), das Image jedoch nicht ausgeführt werden kann oder der Container nach der Ausführung beendet wird, liegt dies normalerweise an einem Fehler im CMD-Startbefehl, wenn der Code lokal gut ausgeführt wird. Führen Sie den Container im Vordergrund aus, docker run -it --name <container_name> <image_name> /bin/bash , geben Sie den Container ein und führen Sie CMD manuell aus, um die Protokollausgabe zu überprüfen. Darüber hinaus können Sie docker exec -t <container_name> /bin/bash den laufenden Container aufrufen und den Code einfach anzeigen. docker logs <container_name> wird die laufende Protokollausgabe angezeigt.

Dies ist das Ende dieses Artikels über die Verwendung von Docker+Jenkins zum automatischen Erstellen und Bereitstellen. Weitere Informationen zum automatischen Erstellen und Bereitstellen von Docker 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:
  • Docker Gitlab+Jenkins+Harbor erstellt einen persistenten Plattformbetrieb
  • Beim Einrichten von Jenkins in einer Docker-Umgebung werden im Konsolenprotokoll beim Erstellen von Aufgaben verstümmelte chinesische Zeichen angezeigt
  • Detaillierte Erklärung zum Einrichten der Jenkins-Build-Umgebung unter Docker
  • Jenkins erstellt Docker-Image-Beispiel
  • Erstellen eines statischen Jenkins Docker-Agentknotens

<<:  MYSQL 5.6 Bereitstellung und Überwachung der Slave-Replikation

>>:  Implementierung einer einfachen Web-Uhr mit JavaScript

Artikel empfehlen

So installieren Sie Redis5.0.3 im Docker

1. Ziehen Sie das offizielle 5.0.3-Image [root@lo...

Erläuterung der CSS3-Überlaufeigenschaft

1. Überlauf Überlauf ist Überlauf (Container). We...

Schleifenmethoden und verschiedene Durchlaufmethoden in js

Inhaltsverzeichnis for-Schleife While-Schleife do...

Einfaches Anwendungsbeispiel für rekursive MySQL 8.0-Abfragen

Vorwort Dieser Artikel verwendet die neuen Funkti...

Das vergessene Button-Tag

Hinweis: Dieser Artikel wurde von jemand anderem ü...

Prioritätsanalyse von und/oder Abfragen in MySQL

Dies ist ein Problem, das leicht übersehen wird. ...

Detaillierte Erklärung der Anwendung von CSS Sprite

CSS Sprite, auch bekannt als CSS Sprite, ist eine...

Lösung für den MySQL-Fehlercode 1064

Wenn die Wörter in der SQL-Anweisung mit den Schl...

Detailliertes Beispiel für Zeilensperren in MySQL

Vorwort Sperren sind Synchronisierungsmechanismen...

JavaScript-Einzelthread und asynchrone Details

Inhaltsverzeichnis 1. Aufgabenwarteschlange 2. Um...

Tutorial zur Verwendung des Frameset-Tags in HTML

Frameset-Seiten unterscheiden sich etwas von norm...

Detaillierte Analyse der MySQL Master-Slave-Replikation

Vorwort: In MySQL sollte die Master-Slave-Archite...

Verwendung und Beispiele für Linux-Befehle zur Echotextverarbeitung

Die Beschreibung von echo im Linux-Hilfedokument ...