Alle von Ihnen erwähnten Tools (Jenkins, Ant, Git) helfen dabei, Ihr Artefakt tatsächlich zu erstellen und zu testen. In der Java-Welt kann dies normalerweise Krieg, Ohr oder nur ein Reißverschluss mit der Anwendung im Inneren sein. Manchmal kann es sich bei komplizierten Anwendungen um mehr als ein Artefakt handeln. Für andere Programmierplattformen können DLLs, Binärdateien für mehrere verschiedene Plattformen usw. variieren.
Angenommen, Sie möchten Ihre Anwendung bereitstellen. Wenn Sie einen Server haben, können Sie dies manuell oder mit einem selbst erstellten Skript tun. So weit, ist es gut :)
Was ist jedoch, wenn Sie viele Farmen (Gruppen von Maschinen) haben? Verschiedene Farmen sollten Bereitstellungen mit unterschiedlichen Konfigurationen (Datenbanken, unterschiedliche geografische Standorte) haben. Was ist, wenn Ihre Anwendung horizontal skaliert werden kann, sodass der Farm einige neue Knoten hinzugefügt werden sollten? eine triviale Aufgabe. Ihr QA-Team fordert möglicherweise nur eine neue Umgebung an, um die Tests auszuführen. Ihr Leistungsteam kann eine neue Umgebung anfordern oder der Farm Knoten hinzufügen, um Stresstests usw. durchzuführen. Jetzt scheint es kompliziert zu sein, all diese Dinge zu verwalten. Hier kommen Werkzeuge wie Ansible, Koch, Salz, Puppe und andere ins Spiel.
Diese helfen tatsächlich dabei, die Bereitstellung zu automatisieren. Sie können Bereitstellungsrezepte bereitstellen und fehlende Abhängigkeiten installieren (um Ihr Projekt auszuführen, sind möglicherweise jre, tomcat einer bestimmten Version und nginx für statische Inhalte erforderlich). All dies auf der Ebene der Farm.
Ich weiß, dass die Antwort zu allgemein ist und für Java-Entwickler weniger offensichtlich erscheint (ich bin einer von denen). Wenn Sie jedoch ein Team von System- / Entwicklern haben, sollten diese sofort auf die Vorteile dieser Tools hinweisen.