Skip to content
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

Mit Java 17 kompilieren #663

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

tobidope
Copy link
Member

@tobidope tobidope commented Feb 12, 2025

Mit dem maven build hat es ausgereicht, auf jdk 17 zu wechseln. Alles andere habe ich auf 11 geleasen (maven.compiler.release)

fixes #659

@tobidope tobidope marked this pull request as ready for review February 12, 2025 20:17
@tobidope
Copy link
Member Author

Was muss ich denn tun, damit es auf Github Actions baut?

@tobidope tobidope requested review from tolot27 and dippeal February 12, 2025 20:27
tolot27
tolot27 previously approved these changes Feb 12, 2025
Copy link
Member

@tolot27 tolot27 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Das funktioniert alles für 3.x+. Bei backports/Bugfixes sollte dieser commit nicht gemerged werden.

@tobidope
Copy link
Member Author

Das funktioniert alles für 3.x+. Bei backports/Bugfixes sollte dieser commit nicht gemerged werden.

Kannst du einmal erklären, warum das so ist? Da fehlt mit die Übersicht. Das target bleibt unverändert bei 11 im ant build.

@@ -12,6 +12,7 @@ on:
- 'lib/**'
- 'lib.src/**'
- 'src/**'
- '.github/**'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Erkläre bitte warum der .github Ordner geprüft werden soll.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Erkläre bitte warum der .github Ordner geprüft werden soll.

Nur so funktioniert der buildcheck auch bereits bei diesem PR.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Eigentlich würde .github/workflows reichen.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So richtig wohl ist mir dabei auch nicht und es erfordert einen sorgfältigen Review-Prozess, dass nicht irgend ein PR auch mal was an den Actions ändert. Irgendwo hatte ich da mal was mit Abfluss von Informationen (z. B. Tokens), insbesondere im Zusammenhang mit pull_request und pull_request_target gelesen. Ich glaub das war in Accessing contextual information about workflow runs.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will einer anpassen oder soll ich später?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ach du hast das nicht in deinem fork master getestet oder wie? Ich habe die buildchecks immer in meinem repo getestet bevor ich den PR erstellt habe.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Da hat es natürlich auch gebaut, weil ich den workflow angepasst habe. Aber dann baut es natürlich auch hier. Oder wie ist das gemeint? Anders gesagt, ich habe es auch im maven build getestet und ich baue lokal mit Java 21. Da baut und läuft es auch.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Das Problem ist, dass nun jeder Änderung (oder vollständige Ersetzung) an der buildcheck.yml von irgend einem neuen PR automatisch ausgeführt wird. Damit kann man schon einiges anstellen. Vor deinem letzten Commit 46dd5d8 war es noch krasser, da damit neue Actions einfach durch Erstellen eines PRs hätten "untergeschoben" werden können. Alles natürlich erst nachdem dieser PR gemerged wird.
Das ist natürlich nicht unbedingt gewünscht. Daher nehmen wir es bisher in Kauf, dass die PR buildchecks fehlschlagen, bis wir die Workflows "kontrolliert" angepasst haben.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Das konnte man doch schon vorher. Die Actions laufen grundsätzlich. Ich kann auch ein bisschen white space in einer Java Datei ändern und einen workflow anpassen oder hinzufügen. Oder übersehe ich was? Das wichtige secret, der GITHUB_TOKEN ist nur für den run gültig, aber damit kann man natürlich schon was anfangen. Daher sollte der prinzipiell in den meisten Läufen so angepasst sein, dass er nur lesend auf das repo zugreifen kann und nicht mehr.

permissions:
  contents: read

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Das konnte man doch schon vorher. Die Actions laufen grundsätzlich. Ich kann auch ein bisschen white space in einer Java Datei ändern und einen workflow anpassen oder hinzufügen. Oder übersehe ich was?

Ne, ich hatte bisher ein anderes Verhalten bei meinen Tests bzw. der Implementierung des buildchecks beobachtet, die jedoch vermutlich falsch waren. Ich meinte, beobachtet zu haben, dass immer die Workflow-Konfiguration (.yml) der base branch verwendet wird. Auf dieser Annahme basierten meine Kommentare. Wie ich mit #671 jedoch geprüft habe, wird doch das yml des PR verwendet. Daher könnten wir durchaus in den Actions den Pfad .github/workflows mit aufnehmen. Kannst du das bitte so setzen?

Worauf ich eigentlich hinaus will, ist GitHub Actions Pinning. Das sollten wir in einem anderen PR machen und dazu unsere Tags nutzen (statt die commit SHAs). Damit können wir auch das in #663 (comment) angesprochene Problem lösen, indem wir das in ein Bugfix release für die älteren Versionen so mit aufnehmen.

So habe ich wieder einiges über die GitHub Actions gelernt. 😄

Das wichtige secret, der GITHUB_TOKEN ist nur für den run gültig, aber damit kann man natürlich schon was anfangen. Daher sollte der prinzipiell in den meisten Läufen so angepasst sein, dass er nur lesend auf das repo zugreifen kann und nicht mehr.

permissions:
  contents: read

Es ist sicher eine gute Idee, die notwendigen Permissions nochmal zu validieren und ggf. zu setzen. Das können wir gern in einem weiteren PR machen oder zunächst in einer Discussion. Allerdings kann es sein, dass die Read Permission bereits in den repository/organization settings gesetzt ist. Das kann ich jedoch nicht prüfen, da ich dazu nicht die nötige Berechtigung habe. Vielleicht kann das @dippeal ?

@tolot27
Copy link
Member

tolot27 commented Feb 13, 2025

Das funktioniert alles für 3.x+. Bei backports/Bugfixes sollte dieser commit nicht gemerged werden.

Kannst du einmal erklären, warum das so ist? Da fehlt mit die Übersicht. Das target bleibt unverändert bei 11 im ant build.

Weil wir sonst alle früheren Version, für die wir Bugfixes rausgeben/releasen nicht mehr gegen die damals verwendeten Jameica- und Hibiscus-Versionen "linken" würden, sondern gegen die neuen. Das könnte wieder zu Build- und Execute-Problemen führen.

@tolot27
Copy link
Member

tolot27 commented Feb 13, 2025

@tobidope Hattest du schon mal geprüft, ob unsere master bzw. feature branch jars mit den 17er .class-Dateien in den libs klarkommen und unser Java11-Plugin weiterhin funktioniert?

@tobidope
Copy link
Member Author

Nein. Aber zur Laufzeit muss mit der neuen Jameica Version Java 17 genutzt werden. Swt kommt in Java 17. Also alles darunter kann per definition nicht genutzt werden. Vielleicht der headless mode, aber da habe ich keine Ahnung.

@tobidope
Copy link
Member Author

Das funktioniert alles für 3.x+. Bei backports/Bugfixes sollte dieser commit nicht gemerged werden.

Kannst du einmal erklären, warum das so ist? Da fehlt mit die Übersicht. Das target bleibt unverändert bei 11 im ant build.

Weil wir sonst alle früheren Version, für die wir Bugfixes rausgeben/releasen nicht mehr gegen die damals verwendeten Jameica- und Hibiscus-Versionen "linken" würden, sondern gegen die neuen. Das könnte wieder zu Build- und Execute-Problemen führen.

Ein Grund mehr hart gegen bestimmte Versionen von Jameica und Hibiscus zu bauen. Das aktuelle nightly sollte nicht der default sein, sondern ein Sonderlauf oder renovate branch.

@dippeal
Copy link
Member

dippeal commented Feb 13, 2025

Das funktioniert alles für 3.x+. Bei backports/Bugfixes sollte dieser commit nicht gemerged werden.

Kannst du einmal erklären, warum das so ist? Da fehlt mit die Übersicht. Das target bleibt unverändert bei 11 im ant build.

Weil wir sonst alle früheren Version, für die wir Bugfixes rausgeben/releasen nicht mehr gegen die damals verwendeten Jameica- und Hibiscus-Versionen "linken" würden, sondern gegen die neuen. Das könnte wieder zu Build- und Execute-Problemen führen.

Ein Grund mehr hart gegen bestimmte Versionen von Jameica und Hibiscus zu bauen. Das aktuelle nightly sollte nicht der default sein, sondern ein Sonderlauf oder renovate branch.

Sehe ich ähnlich. Wollten einige hier nicht und lieber die neuesten tags geladen haben.

@tolot27
Copy link
Member

tolot27 commented Feb 13, 2025

Sehe ich ähnlich. Wollten einige hier nicht und lieber die neuesten tags geladen haben.

Man könnte das ja auftrennen zwischen den verschiedenen branch/tag Kategorien (master/dev, feature, bugfix) bzw. bei dem Buildcheck auch als Matrix-Check implementieren.

@JohannMaierhofer
Copy link

Also, in unserem plugin.xml steht, dass wir Jameica 2.8+ voraussetzen. Das bedeutet doch, dass wir selbst mit der ersten 2.8.x funktionieren müssen.
Dann müssten wir eigentlich diese Version als Grundlage nehmen, oder wir ziehen das schon mal auf 2.10+ hoch.
Bei Jameica 2.8.6 müssten wir laut Kompatibilitätsmatrix nämlich noch mit Java 8 kompilieren.

@tobidope
Copy link
Member Author

Was hindert uns daran, den pr zu mergen? Im build.xml wird weiterhin kompatibel zu Java 11 gebaut, da der Parameter release weiterhin auf 11 steht.

 <target name="compile" depends="init, clean">
    <mkdir dir="${class.dir}" />
    <javac debug="true" includeantruntime="false" debuglevel="lines,vars,source" release="${define.java.version}" encoding="${define.encoding}" deprecation="true" destdir="${class.dir}" srcdir="${src.dir}">
			<classpath refid="compilepath" />
		</javac>
  </target>

Es ist kein breaking change, es führt nur dazu, dass im aktuellen System der build wieder funktioniert.

@tobidope tobidope requested review from tolot27 and dippeal February 15, 2025 14:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Build geht nicht mehr nachdem Jameica 2.10.5 draußen ist
4 participants