-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature/GitHub workflow release #83
Feature/GitHub workflow release #83
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Glückwunsch zu dieser eleganten Lösung. Das sieht alles viel besser aus, als ich es mir vorgestellt hatte. Viele der Patterns sind neu für mich. Zu Java kann ich nichts sagen, aber mir gefällt das Plattformupdate auf die 11er Serie.
Um den Lerneffekt für mich zu erhöhen, kommentiere ich meine Beobachtungen im Code. Alle Kommentare auf nightly-builds.yml
ließen sich ebenso auf release.yml
anwenden.
Passen die Vorschläge das Zero Trust Berechtigungssystem zu verwenden eurerseits so?
Und habt ihr eine ähnliche Meinung bzgl. Rolling Releases für die nightlies und gepinnten Versionen für die stabilen Veröffentlichungen?
Einzig die Release Action marvinpinto/action-automatic-releases bereitet mir ein wenig Kopfzerbrechen. Sie erscheint schwer wartbar (öffnen von der minifizierten index.js killt meinen Browser, siehe der PR für automatische Release Notes) und hat lange keine Aktualisierungen gesehen. Ich benutze gerne ncipollo/release-action, aber es gibt auch google-github-actions/release-please-action und die zwei anderen, welche in der README der archivierten actions/create-release Action genannt werden.
Weiterhin denke ich, dass sich die hier gegebenen Beispiele auch gut auf
werden anwenden lassen, da beide hier schon beispielhaft mitgebaut werden. Vielleicht lässt sich das in Zukunft auch etwas entheddern, und hier auf OpenJVerein beschränken, indem versionierte Artefakte der anderen genutzt werden.
Ich habe mich sehr gefreut, als ich den PR gesehen habe, und denke das ist ein guter Satz nach vorne. Mit den gemachten Vorschlägen gedenke ich diesen noch etwas zu ergänzen.
Wie seht ihr das alles?
PS: Die Screenshots sind von https://github.com/dippeal/jverein/actions & https://github.com/dippeal/jverein/releases? |
Ja. Allerdings nicht mehr komplett rekonstruierbar, da ich meinen master branch, auf den openjverein Stand, zurückgesetzt habe. Damit sind die workflows nicht mehr da. |
e642e2b
to
a60c7fb
Compare
…-workflow-release
Der aktuelle PR Merge funktioniert wie gewünscht und kann geprüft & übernommen werden. |
…eature/github-workflow-release
5e66915
to
c0d293d
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ich denke das ist gut herangereift.
Nur noch Kleinigkeiten:
Gibt es eine Möglichkeit Leerzeilen am Ende von Textdateien über alle IDEs und Systeme (Linux, mac, Windows) hinweg zu erzwingen?
Ließe sich vielleicht ein Git Pre-Commit Hook einbauen, der überprüft, dass alle in git enthaltenen Dateien diese Leerzeile haben?
Ich würde das wenn dann gerne in diesem Zyklus mit einbauen, damit es in Zukunft keine Frage mehr ist. Es fügt aber eine Dependency auf pre-commit
hinzu.
Hi jon, |
Hallo BT-11. Danke für's nachfragen. Ich wollte den Kommentar erst an Ort und Stelle in die beiden Dateien anfügen, dachte mir dann aber das hier zu bündeln. Wenn wir uns den Diff dieses PRs angucken, sehen wir am Ende von beiden Dateien eine Warnung: Dies ist die gleiche Warnung die git ausgibt, wenn mensch Dies waren die treffendsten Zusammenfassungen des Themas:
Leider scheint es auf git-scm.com oder auch in den GitHub oder GitLab Docs keine Erwähnung dessen zu geben. git, und damit sein Diff Algorithmus, basieren auf C, welches definiert, dass eine Zeile immer mit einem Neue-Zeile-Zeichen enden muss, d.h. auch wenn sie leer ist. Es bereitet dem Diff Algorithmus zudem Probleme Änderungen korrekt zu verfolgen, wenn diese Leerzeile nicht existiert. Aus der obigen Quelle: |
Hi Jon, |
Können wir bitte erstmal eine Sache (diesen PR) abschließen und dann weitere Features in separaten issues/furture requests besprechen. |
Mir ist das bei meinem Review aufgefallen, deswegen stellte ich die Frage. Hierbei geht es nicht um Wie wir damit umgehen steht uns ja frei. |
Aufgrund des issues #39 habe zwei github workflows gebaut.
Mit dem ersten workflow wird ein offizielles Release erstellt. Dies geschieht manuell über Actions > "openjverein official release" > "Run workflow".

Es wird ein tag und ein release erstellt. Der Name des tags ist die Versionsnummer. Die Nummer wird aus dem Quellcode ermittelt. Der Name des Release ist "Release [Versionsnummer]". Es wird das kompilierte Plugin als Zip angehängt. Der Beschreibungstext wird automatisch anhand der commits zwischen diesem und dem letzten release erstellt.

Der zweite workflow "openjverein nightly release" erstellt ein nightly release. Es wird automatisch ausgeführt sobald 1. ein PR in den master überführt wird, oder 2. wenn ein push in den master erfolgt (commit push). Das nightly wird als pre-release gekennzeichnet. Tag und release werden immer überschrieben, solange sich die Versionsnummer von jverein nicht ändert.



Installation
Nach merge des PR wird die nightly action sofort ausgeführt. Es sind keine weiteren Anpassungen am Repository nötig.
Sonstiges
Die build.xml hat nun eine "nightly" und "lib" Methode.
Die Methode nightly erstellt im Ordner ./releases/nightly die folgenden Dateien:
Beim Ausführen des "official release" werden analog zur nightly die gleichen Anhänge, wie in der Auflistung, erstellt.
Die Methode lib erstellt die Datei "jverein-lib.jar" im Ordner ./releases.
Da Java 1.7 sehr veraltet ist, habe ich die Java Version in den build.properties auf 11 gesetzt.
Ich weiß es kann einiges am Code optimiert/verändert werden, aber es sollte soweit funktionieren.