Artifact Repositories

Software-Artefakte speichern – mit Artifact Repositories wie Nexus und Artifactory kein Problem. Für die Verwaltung verschiedenster Software-Artefakte hat sich der Einsatz beider Open-Source-Tools bei uns bewährt.

Artefaktverwaltung mit Artifactory oder Nexus

Nexus und Artifactory sind zwei populäre Open-Source-Artefakt-Repositories für die Verwaltung verschiedenster Software-Artefakte. Beide bieten die gleiche Basisfunktionalität, die es erlaubt, versionierte Software-Artefakte zu speichern, z.B. via Maven, Gradle, Ant, Ivy oder manuell über eine Benutzeroberfläche.

Zudem kann ein Artefakt-Repository auch als Proxy und lokaler Cache für andere Repositories im Internet dienen (z.B.: Maven Repo, Apache Repo, Codehaus Repo, usw.). Dadurch müssen Artefakte nicht von allen Entwicklern oder CI Servern erneut aus dem Internet geladen werden. Zudem verringert sich die Abhängigkeit zu externen Repositories, falls diese durch Wartung oder technische Probleme nicht erreichbar sein sollten. Ein weiterer wichtiger Faktor ist die Kontrolle über den Zugriff und die Verwendung von Software-Artefakten. Durch ein zentrales Repository kann kontrolliert werden, welche externen, teilweise auch sicherheitsrelevanten Artefakte verwendet werden dürfen und wer Zugriff darauf erhält.

Interne Artefakte können somit auch leichter zwischen verschiedenen Entwickler-Teams geteilt werden. Durch die Trennung von Release und Snapshot Repositories wird zusätzlich gewährleistet, dass nur getestete Bibliotheken im Release Repository landen und von Entwicklern verwendet werden. Somit können versehentliche Fehler der Entwickler vermieden werden.

Für die Administration bieten Nexus und Artifactory eine Web-Oberfläche, mit der alle Konfigurationen vorgenommen werden können. Dadurch kann man sehr schnell und unkompliziert Artefakte suchen, Benutzer verwalten oder neue externe Repositories einbinden.

Zusätzlich gibt es für beide Repositories eine RESTful-Schnittstelle, die eine Integration mit anderen Systemen ermöglicht. Wie Sie ein eigenes Jenkins-CI-Plugin erstellen, um zusätzliche Metadaten für ein Artefakt im Nexus-Artefakt-Repository zu hinterlegen, können Sie in folgendem Blogeintrag nachlesen: Custom Jenkins/Nexus Plugin.

Continuous Delivery

Für die Continuous-Delivery-Pipeline, wie sie in der Artikelserie zu Continuous Delivery beschrieben ist, verwenden wir Artifactory von der Firma JFrog. Wir hätten uns auch für Nexus entscheiden können, da die grundlegenden Funktionalitäten von beiden Systemen angeboten wird.

In unserer Continuous-Delivery-Pipeline werden alle Maven-Abhängigkeiten und externen Repositories über Artifactory aufgelöst. Die erzeugten Software-Artefakte werden nach jedem erfolgreichen CI Build in Artifactory versioniert gespeichert. Dadurch sind die Build-Jobs jederzeit vollständig nachvollziehbar, da alle verwendeten Artefakte aus Artifactory geholt werden.

Zusätzlich speichern wir die gezippte Version des Tomcat Servers in Artifactory, die von unserem Konfigurationsmanagement Tool Puppet für die Provisionierung aller Server verwendet wird. Dadurch ist sichergestellt, dass alle Server die identischen Tomcat-Pakete verwenden.