Ich lasse Jenkins laufen und meine App ist dockerisiert, d. h., wenn ich den Container starte, wird der Port 3000 freigegeben und ich kann meinen Browser dorthin führen. Auf jedem Github PR möchte ich diesen Git-Commit irgendwo in einem laufenden Container deployen und Jenkins zurück zum PR schicken lassen, wo er erreichbar ist. Bei jeder PR-Aktualisierung wird es automatisch neu bereitgestellt und bei PR-Schließen / Auflösen wird es abgerissen.
Ich habe Kubernetes und einen kleinen Rancher angeschaut, aber was ist der einfachste Weg, um das in Gang zu setzen, vorausgesetzt, ich kann nur in einer Box bereitstellen?
Es gibt ein jenkins plugin github-pullrequest kann Ihr Problem lösen.
Voraussetzungen:
Bitte befolgen Sie die Anleitung Konfiguration , um Ihre jenkins-Integration einzurichten Github.
Nach der Konfiguration:
Über den Port von cotainer mit multi PR kann man Container mit -p 3000
ausführen, es wird automatisch ein Port in einem Bereich auf dem Docker Host angezeigt, docker port <container>
zeigt die spezifische Portnummer an, also zum Beispiel:
container1
mit der Adresse <host>:32667
für PR1
container2
mit der Adresse <host>:35989
für PR2
Wie Sylvain GIROD sagte:
Mit nur einem Feld zum Ausführen der Anwendung müssen Sie den freigelegten Port ändern. Wenn ein GitHub PR auftritt, stellen Sie Ihre Anwendung bereit (docker run -p newport: containerport). Wenn Sie Dienste bereitstellen, ändern Sie den Zielport.
Dann senden Sie den Link mit diesem Port zurück an den Benutzer (E-Mail?).
Zusätzlich benötigen Sie einen Schlüsselwertspeicher, um sich zu merken, welcher Pod für welche Benutzer erstellt wurde, damit Sie sich für einen neuen PR entscheiden können, ob die alten Container zerstört werden sollen.
Ich würde auch vorschlagen, den Diensten eine Zeit zu geben, zu leben und regelmäßig alte Container / Dienstleistungen aufzuräumen.
Tags und Links jenkins docker kubernetes pull-request rancher