Bintray – Deployment via Maven


Flattr this

Motivation

Da beim Deployment auf bintray doch immer ein bisl Handarbeit notwendig ist und ich mich jedesmal ein wenig um das Deployment drücken möchte weil ich denke es wird Stunden dauern hier nun einfach eine Gedankenstütze was alles zu tun ist.

Den Quellkode finalisieren

Zunächst muss mal das Projekt rund geschliffen werden. Also der maven Build funktioniert, das CI System meldet grün und das Codecoverage System liegt auch bei über 90%.

Die groupId des Projektes sollte so gewählt werden, das auch alle zukünftigen Projekte diese nutzen können, denn ein Nutzer kann unter bintray nur mit einer groupId arbeiten. (Das sollte unbedingt beachtet werden, da es auf bintray manuelle Schritte gitbt, welche erst nach Antrag vom Support durchgeführt werden (Wenn es also das erste Projekt ist, dann take it easy, es wird morgen nicht live sein aber stelle sicher,  dass Du es zukünftig leichter hast).

In der pom.xml werden die Deployment Repositories von jfrog eingetragen. Bitte auch in der settings.xml die verschlüsselten Zugangsinfos hinterlegen. (Die settings.xml im Homeverzeichnis sollte geschützt sein). Hier ein Beispiel für die pom.xml Einträge:

<distributionManagement>
<snapshotRepository>
<id>bintray-funthomas424242-snapshots</id>
<name>oss-jfrog-artifactory-snapshots</name>
<url>https://oss.jfrog.org/artifactory/oss-snapshot-local</url&gt;
</snapshotRepository>
<repository>
<id>bintray-funthomas424242-releases</id>
<name>oss-jfrog-artifactory-releases</name>
<url>https://oss.jfrog.org/artifactory/oss-release-local</url&gt;
</repository>
</distributionManagement>

Dann sind die Projektinformationen fertig zu stellen. Die README muss vorhanden sein und ist auf den aktuellen Stand zu bringen. Bei der Gelegenheit bauen wir gleich ein Template für den späteren Download Button (im Markdown Format) ein:

[ ![Download](https://api.bintray.com/packages/bintray-nutzer-name/bintray-repo-name/bintray-package-name/images/download.svg) ](https://bintray.com/bintray-nutzer-name/bintray-repo-name/bintray-package-name/_latestVersion)

(Die fett geschriebenen Bezeichner kennzeichnen die variablen Teile welche konkret von Nutzer und Projekt abhängen)

Die Changelog muss vorhanden sein und ist so zu aktualisieren, dass das das gleich zu bauende Release darin beschrieben ist. 

Ein File LICENSE befindet sich auch im Projektverzeichnis und enthält den aktuellen Lizenztext unter dem das Projekt entwickelt wird.

Bintray vorbereiten

Jetzt loggen wir uns auf bintray ein und navigieren in das Zielrepository. Falls wir noch keines angelegt haben jetzt wäre der ideale Zeitpunkt dafür🙂 . Wenn der Quellkode auf github gehostet ist, können wir jetzt das Projekt importieren und dabei ein Package vom Wizard anlegen lassen. 

Ein Release bauen und hochladen

Jetzt wäre der richtige Zeitpunkt mvn -B -Dtag=0.0.0-RELEASE release:prepare lokal auszuführen. Falls alles klappt gleich mvn release:perform hinterher. Mit git checkout tags/0.0.0-RELEASE -b release-0.0.0 den Release Tag als neuen Branch auschecken. Anschließend alles schön pushen und schauen ob es im scm sichtbar ist, z.B. mit git push xxxx.  

Da wir uns auf dem Release Tag Stand befinden, sollte jetzt in der pom.xml auch eine Release Version (also ohne -SNAPSHOT) stehen. Auf diesem Stand versuchen wir  ein Deployment mit mvn deploy, welches unter jfrog im oss-release-local Repository landen sollte. 

(Möglicherweise benötigt man hierzu gesonderte Berechtigungen und muss erst die Aufnahme des auf Bintray angelegten Packages ins JCenter beantragen – wobei man hier den Haken für staging von snapshots setzen muss.)

Das Release veröffentlichen

Auf jfrog schauen wir unter oss-release-local und stellen sicher, dass unsere Dateien angekommen sind. Sollten sie unter oss-snapshots-local gelandet sein, dann korrigieren bis es geht. Snapshots können nicht auf bintray veröffentlicht werden!

Auf jforg im Release setzen wir auf dem Versionsorner unseres Releases nun folgende Properties:

Property

Description
bintray.package
A target package name under the repository.

Please note that you must first create the package in Bintray if it does not exist.

bintray.path

A target path in the repository under which to save the file.

The path is considered optional as Artifactory will use the same path the file is stored in the repository.

bintray.repo
A target repository in Bintray, in the format of {username}/{repository}
bintray.version
A target version under the package.If the version does not yet exist in Bintray, it is created automatically.

 

Fazit

Es ist ganz schön viel Handarbeit und für die Zukunft wäre  es schön für den ganzen Overhead ein maven Plugin zu besitzen – aktuell ist mir aber keines bekannt. 

 

Post a comment or leave a trackback: Trackback URL.

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: