44name : Binaries (JDK and JavaFX early access builds)
55
66on :
7- schedule :
8- - cron : " 0 18 * * *"
97 pull_request :
108 types :
119 - opened
@@ -121,9 +119,8 @@ jobs:
121119 needs : [conditions]
122120 if : ${{ needs.conditions.outputs.should-build == 'true' }}
123121 env :
124- javafx : ' 25'
125- jdk_version : ' 25'
126- jdk : ' openjdk-25.0.0-ea+21'
122+ jdk_version : ' 24'
123+ jdk_distribution : ' openjdk-25.0.0-ea+27'
127124 strategy :
128125 fail-fast : false
129126 matrix :
@@ -134,6 +131,13 @@ jobs:
134131 archivePortable : tar -c -C jabgui/build/distribution JabRef | pigz --rsyncable > jabgui/build/distribution/JabRef-portable_linux.tar.gz && rm -R jabgui/build/distribution/JabRef
135132 archivePortableJabKit : tar -c -C jabkit/build/distribution jabkit | pigz --rsyncable > jabkit/build/distribution/jabkit-portable_linux.tar.gz && rm -R jabkit/build/distribution/jabkit
136133 suffix : ' -ea'
134+ archForDebianRepack : " _amd64"
135+ - os : ubuntu-22.04-arm
136+ displayName : linux-arm
137+ archivePortable : tar -c -C jabgui/build/distribution JabRef | pigz --rsyncable > jabgui/build/distribution/JabRef-portable_linux_arm64.tar.gz && rm -R jabgui/build/distribution/JabRef
138+ archivePortableJabKit : tar -c -C jabkit/build/distribution jabkit | pigz --rsyncable > jabkit/build/distribution/jabkit-portable_linux_arm64.tar.gz && rm -R jabkit/build/distribution/jabkit
139+ suffix : ' -ea_arm64'
140+ archForDebianRepack : ' _arm64'
137141 - os : windows-latest
138142 displayName : windows
139143 archivePortable : 7z a -r jabgui/build/distribution/JabRef-portable_windows.zip ./jabgui/build/distribution/JabRef && rm -R jabgui/build/distribution/JabRef
@@ -145,6 +149,7 @@ jobs:
145149 - os : macos-14
146150 displayName : macOS (ARM64)
147151 suffix : ' -ea_arm64'
152+ archForDebianRepack : " "
148153 runs-on : ${{ matrix.os }}
149154 outputs :
150155 major : ${{ steps.gitversion.outputs.Major }}
@@ -159,7 +164,7 @@ jobs:
159164 submodules : ' true'
160165 show-progress : ' false'
161166 - name : Install pigz and cache (linux)
162- if : (matrix.os == 'ubuntu-22.04' )
167+ if : (startsWith( matrix.os, 'ubuntu') )
163168 uses : awalsh128/cache-apt-pkgs-action@latest
164169 with :
165170 packages : pigz
@@ -175,37 +180,47 @@ jobs:
175180 - name : Tell gradle to use JDK ${{ env.jdk_version }} (linux, Windows)
176181 if : ${{ !startsWith(matrix.os, 'macos') }}
177182 run : |
178- sed -i "s/JavaLanguageVersion.of(24)/JavaLanguageVersion.of(${{ env.jdk_version }})/" build-logic/src/main/kotlin/buildlogic.java-common-conventions.gradle.kts
179- sed -i "s#vendor = JvmVendorSpec.AZUL##" build-logic/src/main/kotlin/buildlogic.java-common-conventions.gradle.kts
180- cat build-logic/src/main/kotlin/buildlogic.java-common-conventions.gradle.kts
183+ # Update JavaLanguageVersion
184+ sed -i "s/JavaLanguageVersion.of..../JavaLanguageVersion.of(${{ env.jdk_version }})/" build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
185+
186+ # Update options.release
187+ sed -i "s/options\.release = ../options.release = ${{ env.jdk_version }}/" build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
188+
189+ # Use default vendor
190+ # sed -i "s#vendor = JvmVendorSpec\..*##" build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
191+
192+ cat build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
181193 - name : Tell gradle to use JDK ${{ env.jdk_version }} (macOS)
182194 if : ${{ startsWith(matrix.os, 'macos') }}
183195 run : |
184- sed -i '.bak' "s/JavaLanguageVersion.of(24)/JavaLanguageVersion.of(${{ env.jdk_version }})/" build-logic/src/main/kotlin/buildlogic.java-common-conventions.gradle.kts
185- sed -i '.bak' "s#vendor = JvmVendorSpec.AZUL##" build-logic/src/main/kotlin/buildlogic.java-common-conventions.gradle.kts
186- cat build-logic/src/main/kotlin/buildlogic.java-common-conventions.gradle.kts
196+ sed -i '.bak' "s/JavaLanguageVersion.of..../JavaLanguageVersion.of(${{ env.jdk_version }})/" build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
197+ sed -i '.bak' "s/options\.release = ../options.release = ${{ env.jdk_version }}/" build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
198+ # sed -i '.bak' "s#vendor = JvmVendorSpec\..*##" build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
199+ cat build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
187200
188201 # region setup-JDK
189202 - name : Setup JDK ${{ env.jdk_version }} (${{ env.jdk }}) for "java toolchain" of Gradle
203+ if : false
190204 uses : jdx/mise-action@v2
191205 with :
192206 mise_toml : |
193207 [tools]
194- java = { version = "${{ env.jdk }}", release_type = "ea" }
208+ java = { version = "${{ env.jdk_distribution }}", release_type = "ea" }
195209 - name : Debug
210+ if : false
196211 shell : bash
197212 run : |
198213 set -x
199214 set -e
200215 echo $JAVA_HOME
201216 java --version
202217 - name : Make JDK known to gradle (Linux, macOS)
203- if : (matrix.os != 'windows-latest')
218+ if : false && (matrix.os != 'windows-latest')
204219 shell : bash
205220 # Hint by https://github.com/gradle/gradle/issues/29355#issuecomment-2598556970
206221 run : ln -s ~/.local/share/mise ~/.asdf
207222 - name : Make JDK known to gradle (Windows)
208- if : (matrix.os == 'windows-latest')
223+ if : false && (matrix.os == 'windows-latest')
209224 shell : bash
210225 run : mv ~/AppData/Local/mise ~/.asdf
211226 - name : Setup JDK for gradle itself
@@ -216,94 +231,27 @@ jobs:
216231 # endregion
217232
218233 # region JavaFX
219- - name : Download and extract JavaFX ${{ env.javafx }}
220- if : (matrix.os != 'buildjet-8vcpu-ubuntu-2204-arm')
234+ - name : ' Determine latest JavaFX version '
235+ id : javafx
221236 shell : bash
222237 run : |
223238 set -e
224- set -x
225- mkdir javafx
226- cd javafx
227- curl --no-progress-meter https://jdk.java.net/javafx${{ env.javafx }}/ > javafx.html
228-
229- case "${{ matrix.os }}" in
230- "ubuntu-22.04")
231- OS="linux-x64"
232- EXTRACT="tar xzf *.tar.gz"
233- EXT="tar.gz"
234- ;;
235- "windows-latest")
236- OS="windows-x64"
237- EXTRACT="unzip -qq *.zip"
238- EXT="zip"
239- ;;
240- "macos-13")
241- OS="macos-x64"
242- EXTRACT="tar xzf *.tar.gz"
243- EXT="tar.gz"
244- ;;
245- "macos-14")
246- OS="macos-aarch64"
247- EXTRACT="tar xzf *.tar.gz"
248- EXT="tar.gz"
249- ;;
250- *)
251- echo "Unsupported OS"
252- exit 1
253- ;;
254- esac
255- echo "OS set to $OS"
256-
257- URL_SDK=$(grep -o "https://download.java.net/java/.*/javafx.*${OS}_bin-sdk.${EXT}" javafx.html | head -n 1)
258- echo "Downloading $URL_SDK..."
259- curl -OJ --no-progress-meter $URL_SDK
260- $EXTRACT
261- rm *.$EXT
262-
263- URL_JMODS=$(grep -o "https://download.java.net/java/.*/javafx.*${OS}_bin-jmods.${EXT}" javafx.html | head -n 1)
264- echo "Downloading $URL_JMODS..."
265- curl -OJ --no-progress-meter $URL_JMODS
266- $EXTRACT
267- rm *.$EXT
268-
269- ls -la
270- - name : ' Set JavaFX ${{ env.javafx }} (linux, Windows)'
271- if : ${{ !startsWith(matrix.os, 'macos') && (matrix.os != 'buildjet-8vcpu-ubuntu-2204-arm') }}
239+ curl -s "https://search.maven.org/solrsearch/select?q=g:org.openjfx+AND+a:javafx&rows=10&core=gav" > /tmp/versions.json
240+ jq '[.response.docs[] | select(.v | test(".*-ea\\+.*")) | select(.v | test("^17|^18|^19|^20|^21|^22|^23") | not) | {version: .v}] | group_by(.version | capture("^(?<major>\\d+).*").major) | map(max_by(.version))' < /tmp/versions.json > /tmp/versions-latest.json
241+ JAVAFX=$(jq -r '.[-1].version' /tmp/versions-latest.json)
242+ echo "Using JavaFX ${JAVAFX}"
243+ echo "version=${JAVAFX}" >> $GITHUB_OUTPUT
244+ - name : ' Set JavaFX ${{ steps.javafx.output.version }} (linux, Windows)'
245+ if : ${{ !startsWith(matrix.os, 'macos') }}
272246 shell : bash
273247 run : |
274248 set -e
275- shopt -s globstar
276- for buildgradle in **/build.gradle.kts; do
277- sed -i '/javafx {/{n;s#version = ".*"#sdk = "../javafx/javafx-sdk-${{ env.javafx }}"#}' $buildgradle
278- sed -i "s#jlink {#jlink { addExtraModulePath(\"../javafx/javafx-jmods-${{ env.javafx }}\")#" $buildgradle
279- echo "=========="
280- echo $buidgradle
281- echo "=========="
282- cat $buildgradle
283- done
284- - name : ' Set JavaFX ${{ env.javafx }} (macOS)'
249+ sed -i 's/val javafx = ".*/val javafx = "${{ steps.javafx.outputs.version }}"/' versions/build.gradle.kts
250+ - name : ' Set JavaFX ${{ steps.javafx.output.version }} (macOS)'
285251 if : startsWith(matrix.os, 'macos')
286252 run : |
287253 set -e
288- find . -name 'build.gradle.kts' | while read -r buildgradle; do
289- sed -i '.bak' -e '/javafx {/{n' -e 's#version = ".*"#sdk = "../javafx/javafx-sdk-${{ env.javafx }}"#;}' $buildgradle
290- sed -i '.bak' -e "s#jlink {#jlink { addExtraModulePath(\"../javafx/javafx-jmods-${{ env.javafx }}\")#" $buildgradle
291- cat $buildgradle
292- done
293- - name : ' Set JavaFX ${{ env.javafx }} (linux-arm)'
294- if : (matrix.os == 'buildjet-8vcpu-ubuntu-2204-arm')
295- # No JavaFX EA build for ARM at https://jdk.java.net/javafx23/, therefore using Maven Central artifact
296- run : |
297- set -e
298- curl -s "https://search.maven.org/solrsearch/select?q=g:org.openjfx+AND+a:javafx&rows=10&core=gav" > /tmp/versions.json
299- jq '[.response.docs[] | select(.v | test(".*-ea\\+.*")) | select(.v | test("^17|^18|^19|^20|^21|^22") | not) | {version: .v}] | group_by(.version | capture("^(?<major>\\d+).*").major) | map(max_by(.version))' < /tmp/versions.json > /tmp/versions-latest.json
300- JAVAFX=$(jq -r '.[-1].version' /tmp/versions-latest.json)
301- echo "Using JavaFX ${JAVAFX}"
302- shopt -s globstar
303- for buildgradle in **/build.gradle.kts; do
304- sed -i "/javafx {/{n;s#version = \".*\"#version = \"${JAVAFX}\"#}" $buildgradle
305- cat $buildgradle
306- done
254+ sed -i '.bak' 's/val javafx = ".*/val javafx = "${{ steps.javafx.outputs.version }}"/' versions/build.gradle.kts
307255 # endregion
308256
309257 - name : Setup Gradle
@@ -450,16 +398,17 @@ jobs:
450398 get-childitem -Path jabgui/build/distribution/* | rename-item -NewName {$_.name -replace "${{ steps.gitversion.outputs.AssemblySemVer }}","${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}${{ matrix.suffix }}"}
451399 get-childitem -Path jabgui/build/distribution/* | rename-item -NewName {$_.name -replace "portable","${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}${{ matrix.suffix }}-portable"}
452400 - name : Repack deb file for Debian
453- if : (matrix.os == 'ubuntu-22.04' )
401+ if : (startsWith( matrix.os, 'ubuntu') )
454402 shell : bash
455403 run : |
456404 cd jabgui/build/distribution
457- ar x jabref_${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}${{ matrix.suffix }}_amd64.deb
405+ ls -l
406+ ar x jabref_${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}${{ matrix.suffix }}${{ matrix.archForDebianRepack }}.deb
458407 zstd -d < control.tar.zst | xz > control.tar.xz
459408 zstd -d < data.tar.zst | xz > data.tar.xz
460- ar -m -c -a sdsd jabref_${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}${{ matrix.suffix }}_amd64_repackaged .deb debian-binary control.tar.xz data.tar.xz
409+ ar -m -c -a sdsd jabref_${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}${{ matrix.suffix }}${{ matrix.archForDebianRepack }}_repackaged .deb debian-binary control.tar.xz data.tar.xz
461410 rm debian-binary control.tar.* data.tar.*
462- mv -f jabref_${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}${{ matrix.suffix }}_amd64_repackaged. deb jabref_${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}${{ matrix.suffix }}_amd64 .deb
411+ mv -f jabref_${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}${{ matrix.suffix }}${{ matrix.archForDebianRepack }}_repackaged. deb jabref_${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}${{ matrix.suffix }}.deb
463412
464413 - name : Build JabKit
465414 shell : bash
0 commit comments