Beliebte Suchanfragen

Cloud Native

DevOps

IT-Security

Agile Methoden

Java

//

Ausrollen von Paketen mit Jenkins und der Cloud-Lösung CenterDevice

25.9.2017 | 4 Minuten Lesezeit

Manchmal gibt es Projekte, in denen man nicht die Hoheit über das Produktivsystem des Kunden hat, man also nicht selbständig neue Versionen vollautomatisiert vom Build bis ins Produktivsystem bringen kann. Man muss also einen Weg finden, dem Kunden die neuesten Versionen zur Verfügung zu stellen, ohne dass die Pakete für jedermann zugänglich sind und dennoch gut versioniert werden können. Trotzdem soll natürlich die Sicherheit der Dateien gewährleistet werden.

In einem Kundenprojekt bin ich kürzlich auf diese Situation gestoßen. Abgeschlossenes Produktivsystem, Pakete müssen manuell auf einem Share abgelegt und damit dem Kunden zur Verfügung gestellt werden.

CenterDevice als Share zum Kunden

CenterDevice ist ein Cloud-basiertes, professionelles Dokumentenmanagement- und Online-Collaboration-System, dessen Fokus unter anderem auf dem Teilen von Dokumenten liegt.
Dokumente können über Schlagworte und Sammlungen strukturiert werden, und über die Volltextsuche lässt sich jede Datei schnell wiederfinden. Weitere Details finden Sie hier .

Wir haben uns als Austauschplatform für CenterDevice entschieden, da es mittels öffentlicher Links einen einfachen Weg bietet, die Pakete dem Kunden zur Verfügung zu stellen. Außerdem sind alle Dateien versioniert, sodass auch auf ältere Pakete ohne Probleme zugegriffen werden kann. Der Kunde selbst benötigt dazu keinen eigenen Account.

Jenkins Publisher Plugin nach CenterDevice

Um dennoch einen automatisierten Veröffentlichungsprozess sicherzustellen, fehlt nur noch ein Jenkins Plugin, dass die Pakete in CenterDevice ablegt und auch gleich entsprechend freigibt.

Use Cases

  • Upload beliebiger Dateien nach einem Build nach CenterDevice
  • Upload einzelner Dateien als neue Version bestehender Dateien
  • Sammlungen vergeben, um Pakete eines Produkts zu gruppieren
  • Dateien in Ordner verschieben. Ordner bieten eine weitere Gruppierungsfunktionalität.
  • Öffentlichen Link erzeugen

Konfiguration

Für die Demo wird folgendes benötigt:

  1. Jenkins Installation
  2. Ein Freestyle Job mit einem Batch-Build-Schritt:
    del release.txt
    time /t > release.txt
    date /t >> release.txt
    echo Changelog >> release_notes.txt
    
  3. Diese Jenkins Plugins:

Nach der Installation des CenterDevice-Plugins muss zunächst ein API RefreshToken in der Systemkonfiguration hinterlegt werden.

Das Token kann mit einem Tool erzeugt werden. Es wird dafür ein CenterDevice Account benötigt.

In unserem Job kann das Plugin nun als Post-Build-Schritt hinzugefügt werden

Der eigentliche Upload-Step sieht nun so aus:

Folgende Optionen können gewählt werden:

  1. Hochzuladene Dateien: Dies ist ein Ant Filepattern , dass die hochzuladenen Dateien beschreibt. Die Dateien werden als neue Dateien in CenterDevice angelegt.
  2. Hochladen als Latest-Version: Diese Option erlaubt es, eine Datei als neue Version einer vorhandenen Datei hochzuladen. Das Pattern „Hochzuladene Dateien“ darf dazu nur genau eine Datei beschreiben. Existiert die Datei noch nicht, wird eine erste neue angelegt.
  3. Name des Dokuments: Der Name des Dokuments, als dessen neue Version die Datei hochgeladen werden soll.
  4. Öffentliche Links erzeugen: Bestimmt, ob für alle hochgeladenen Dateien ein öffentlicher Link erzeugt werden soll.
  5. Öffentliche Links als Variable ‚publiclinks‘ in die Datei ‚publiclinks.prop‘ schreiben: Bestimmt, dass alle öffentlichen Links in eine properties Datei geschrieben werden, damit diese über das EnvInject dem Build zu Verfügung gestellt werden können (siehe unten).
  6. Sammlung: Eine Sammlung, in die die Datei eingefügt werden soll.
  7. Ordner: Ein Ordner Pfad in der Sammlung. Geschachtelte Order werden durch Backslash getrennt.

Post-Build-Schritte

Datei hochladen mit Sammlung und Ordner

Upload neue Version, öffentlicher Link und geschachtelte Ordner

Mit dieser Konfiguration werden bereits 2 Dateien nach CenterDevice hochgeladen, für Changelog.txt wird zudem ein öffentlicher Link erzeugt.

Öffentliche Links als Job-Variable

Bislang muss man also noch immer manuell eingreifen, um den öffentlichen Link herauszufinden.
Wäre es da nicht schön, wenn das System uns diesen anzeigen würde?

Dazu nutzen wir das Feature „Öffentliche Links als Variable bereitstellen“. Dies erzeugt nach dem Hochladen die nötigen Links und schreibt diese in eine Properties-Datei „publiclinks.prop“. Die Variable heißt dann publiclinks. Mit EnvInject können wir diese Datei laden, um die Variable auch verwenden zu können. Damit dies auch als Post-Build-Schritt klappt, verwenden wir das Flexible Publish Plugin (enthalten im Any Build Step Plugin ).

Da potenziell mehrere Links auf diese Weise importiert werden können, werden diese in HTML Absätze verpackt (

Tag). Auf diese Weise lässt sich die Variable dann direkt als HTML Inhalt in Emails verwenden.

Als Demo lassen wir uns abschließend den Link in das Build-Log ausgeben. Dies machen wir als Batch-Datei (ebenfalls über Flexible Publish): @echo %PUBLICLINKS%

Das Ergebnis kann sich bereits sehen lassen.

Start publishing files matching 'release.txt' on CenterDevice in collection 'deployment' and folder 'Demo'
Login successful
Searching for collection >deployment<
Found collection >deployment< with id >8ace477b-55be-445f-91b2-cc07be41b7a6<
Searching for folder >Demo<
Found final folder with name >Demo< and id >ca70972c-2c44-441b-a275-cca3b5604fc5<
Uploading file C:\Program Files (x86)\Jenkins\workspace\CenterDevice Publisher Demo\release.txt as release.txt
Start publishing files matching 'release_*' on CenterDevice in collection 'deployment' and folder 'Demo\changelog'
Login successful
Searching for collection >deployment<
Found collection >deployment< with id >8ace477b-55be-445f-91b2-cc07be41b7a6<
Searching for folder >Demo\changelog<
Found final folder with name >changelog< and id >fe4a7865-8671-439f-a70d-9238d2ff6aea<
Retrieving public link for file >Changelog.txt< with id >d37a0a26-df08-4479-868d-fc26355b019f<
Run condition [Always] enabling perform for step [[Inject environment variables, Windows Batch-Datei ausführen]]
[EnvInject] - Injecting environment variables from a build step.
[EnvInject] - Injecting as environment variables the properties file path 'publiclinks.prop'
[EnvInject] - Variables injected successfully.
[CenterDevice Publisher Demo] $ cmd /c call C:\WINDOWS\TEMP\jenkins750722257213274980.bat
Changelog.txt: <p>https://mantest.centerdevice.de:8443/centerdevice-public-link-client/4f09029b-fcb5-43db-b22b-47ab8f3293a6</p>

Changelog.txt mit neuer Version

Multiple release.txt Dateien

Zusammenfassung

Wir haben nun also ein automatisiertes Verfahren zum Veröffentlichen von Paketen in CenterDevice und dem Zustellen von Links zum Download durch den Kunden.
Auch wenn wir hier den Link nur im Build-Log ausgegeben haben, wäre es natürlich möglich eine Mail mit den Links zu versenden. Das überlasse ich aber dem Leser.

Die aktuelleste Version (1.0.4) des Plugins finden Sie hier .

Beitrag teilen

Gefällt mir

0

//

Weitere Artikel in diesem Themenbereich

Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.

//

Gemeinsam bessere Projekte umsetzen.

Wir helfen deinem Unternehmen.

Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.

Hilf uns, noch besser zu werden.

Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.