Ich erstelle eine jenkins-Testumgebung mit dem Docker für CI. Ich habe einen Container mit Jenkins installiert und alle Jobs von meinen vorherigen Jenkins bewegt. Jetzt bleibe ich bei diesem Problem, wo ich Tests ausführen muss, die DB und PHP-Einheit erfordern.
Ich möchte diese nicht in meinem jenkins-Container installieren, da ich spezielle Container für DB, phpunit habe. Also meine Frage ist, wie kann ich den Job jenkins auslösen, um die Tests in den Docker mit den notwendigen Voraussetzungen ausführen.
Ich habe zwei Optionen, bin mir aber nicht sicher, ob sie machbar sind,
Option 1:
Wenn Sie den Job in jenkins ausführen, triggern Sie docker run [container mit allen Abhängigkeiten] [Skript, um den Test auszuführen] Aber ich bin nicht sicher, ob wir docker run aus einem Container auslösen können ??
Option 2:
Erstelle einen neuen Container und installiere jenkins slave darauf. Fügen Sie diesen Container in die Master-Jenkins ein und führen Sie den Test auf dem Slave aus. Stellen Sie sicher, dass der Slave Links zu den Datenbank- und PHP-Unit-Containern hat. Ist das möglich?
Danke
Ich bin mir nicht sicher, ob ich Ihre Frage beantworten werde, aber in Jenkins Declarative Pipeline Ссылка können Sie leicht laufen Docker-Container, auf denen Sie Ihre technologiespezifischen Schritte wie
ausführen möchten php --version
Wenn Ihr Jenkins als Docker-Container ausgeführt wird, möchten Sie dieses Bild möglicherweise mit dem Docker-Client erweitern und eine Verbindung zum Host-Docker herstellen und neue Docker-Container als Jenkins-Container-Geschwister und nicht als Childs erstellen. Dazu müssen Sie docker.sock auf den vom Host zuweisenden Volumes im Andockfenster verweisen:
%Vor%Ausführliche Beschreibung einer solchen Lösung finden Sie in diesem Blogpost: Ссылка
Einfache Pipeline zum Ausführen von Docker mit PHP und Ausführen von php --version
sieht so aus.
Beispiel hier gefunden Ссылка
Hoffe, dass hilft ein bisschen.
Empfehlen Sie Option 2
Verwenden Sie jenkins job trigger, um Jobs in Ihrem jenkins-Slave-Knoten anstelle Ihres jenkins-Containers auszuführen.
Und verwenden Sie jenkins docker plugin , um Ihre Andock-Container zu verwalten, die DB, phpunit, treat sind sie als jenkins slave node, es wird viel einfacher sein.