Wir verwenden eine Reihe von EC2-Instanzen, die in der Zukunft skaliert werden könnten (etwa 100 Instanzen). Jetzt suchen wir nach automatischen Implementierungen, die entweder Jenkins oder AWS Code bereitstellen.
Ich habe festgestellt, dass wir das AWS-Code-Deploy-Plugin mit Jenkins verwenden können, aber was sind die Vor- und Nachteile der folgenden?
1) Eigenständiger AWS Code Deploy 2) Jenkins mit dem AWS Code Deploy Plugin.
Wir verwenden sowohl CodeDeploy als auch Jenkins zur Verwaltung von Bereitstellungen in unseren AWS-Umgebungen.
Sie haben jeweils ihre Rollen, und ich sehe das nicht als eine Pro / Con-Analyse. Ich glaube, dass Sie BEIDE benötigen, um sowohl kontinuierliche Integrations-Builds (Jenkins) als auch den Prozess der Bereitstellung getesteter Builds in Ihren EC2-Umgebungen (CodeDeploy) zu verwalten.
Hier ist unser Setup:
Jenkins befragt unseren SCM nach Änderungen. Wenn eine Änderung auftritt, wird die App erstellt, in einer ZIP-Datei archiviert und in CodeDeploy als bereitstellbares Artefakt registriert. Wir bezeichnen die Revision mit der Jenkins-Build-Nummer - sagen wir app_6111.zip. Jedem Build wird der Code-Bereitstellungs-Bucket gesendet: s3: codedeploy-example-com / app
In CodeDeploy haben wir eine Anwendung konfiguriert, mit Bereitstellungsgruppen für jede Umgebung, z. B. Testen, Produzieren. Da wir # 1 verwenden, sind alle unsere Builds immer bereit für die sofortige Bereitstellung. Mit ein oder zwei Klicks stellen wir beispielsweise die Version app_6111.zip auf einem Testserver bereit.
Für uns ist Jenkins ein Schweizer Taschenmesser der modernen Entwickler und kontinuierliche Integration, Test und Einsatz. Es ist das Rückgrat, von dem aus wir Build-Artefakte verwalten, testen und erstellen können. Wir können alle AWS-Dienste wie S3, CodeDeploy, Elastic Beanstalk usw. integrieren.
Um Ihre spezifischen Fragen zu beantworten:
Ich habe festgestellt, dass wir das AWS-Code-Deploy-Plugin mit Jenkins verwenden können, aber was? sind die Vor- und Nachteile des Folgens?
1) Eigenständiger AWS Code Deploy
Ein eigenständiges CodeDeploy wird nicht in Ihren Build-Prozess integriert. Es muss entweder für ein statisches S3-Artefakt, das manuell hochgeladen wird, oder für eine Github-URL konfiguriert werden. Github ist in Ordnung, aber es gibt kein Konzept eines Builds - es wird vom Master oder einer anderen Zweigstelle bereitgestellt. Sie können beispielsweise nicht einfach zu einem bekannten Build zurückkehren. Testen ist nicht integriert. Keine Möglichkeit, Aufgaben / Jobs zu pipelinen.
2) Jenkins mit dem AWS Code Deploy Plugin.
Dies ist der bevorzugte Ansatz IMHO. Verwenden Sie beide Tools. Erstellen Sie bekannte und getestete Builds, und registrieren Sie dann die Bereitstellung bei CodeDeploy. Das Leben ist gut.
Überprüfen Sie diesen Stackshare-Vergleich von verschiedenen Entwicklern. Viele Dinge werden klar werden.