Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 21 additions & 27 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,77 +19,71 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
java: [8, 11, 17, 18]
java: [17, 21, 25]
distribution: [temurin]
include:
- java: 17
- java: 25
distribution: zulu
- java: 17
- java: 25
distribution: microsoft

outputs:
report-java: 17
report-java: 25
report-dist: temurin

steps:
- name: Check out code
uses: actions/checkout@v6

- name: Set up JDK 17
uses: actions/setup-java@v5
with:
java-version: 17
distribution: ${{ matrix.distribution }}

- name: Compile libraries and tests
run: ./gradlew clean testClasses

- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v5
with:
java-version: ${{ matrix.java }}
distribution: ${{ matrix.distribution }}

- name: Run tests against JDK17-compiled code
run: ./gradlew test --exclude-task compileJava

- name: Archive HTML test report on failure
if: ${{ failure() }}
uses: actions/upload-artifact@v5
with:
name: test-reports-java17-java${{ matrix.java }}-${{ matrix.distribution }}-html
path: "*/build/reports/**"

- name: Build and test with JDK ${{ matrix.java }}
run: ./gradlew clean test

- name: Build archives
run: ./gradlew assemble

- name: Archive HTML test report
- name: Run test using Java 25 runtime
run: ./gradlew testJava25

- name: Run test using Java 21 runtime
run: ./gradlew testJava21

- name: Run test using Java 17 runtime
run: ./gradlew testJava17

- name: Run test using Java 11 runtime
run: ./gradlew testJava11

- name: Run test using Java 8 runtime
run: ./gradlew testJava8

- name: Archive HTML test reports
if: ${{ always() }}
uses: actions/upload-artifact@v5
with:
name: test-reports-java${{ matrix.java }}-${{ matrix.distribution }}-html
path: "*/build/reports/**"

- name: Archive JUnit test report
- name: Archive JUnit test reports
if: ${{ always() }}
uses: actions/upload-artifact@v5
with:
name: test-reports-java${{ matrix.java }}-${{ matrix.distribution }}-xml
path: "*/build/test-results/**/*.xml"

- name: Check binary reproducibility
if: ${{ matrix.java != 8 }} # JDK 8 does not produce reproducible binaries
run: |
./gradlew clean primaryPublishJar
find . -name '*.jar' | grep -v buildSrc | grep -v gradle-wrapper | xargs sha256sum | tee java-webauthn-server-artifacts.sha256sum
./gradlew clean primaryPublishJar && sha256sum -c java-webauthn-server-artifacts.sha256sum
./gradlew clean primaryPublishJar && sha256sum -c java-webauthn-server-artifacts.sha256sum

- name: Archive artifact checksums
if: ${{ matrix.java != 8 }} # JDK 8 does not produce reproducible binaries
uses: actions/upload-artifact@v5
with:
name: artifact-checksums-java${{ matrix.java }}-${{ matrix.distribution }}
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import com.yubico.gradle.GitUtils
project.ext.isCiBuild = System.env.CI == 'true'

wrapper {
gradleVersion = '8.14.3'
gradleVersion = '9.1.0'
}

dependencies {
Expand Down
6 changes: 3 additions & 3 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ repositories {
}

dependencies {
implementation("info.solidsoft.gradle.pitest:gradle-pitest-plugin:1.15.0")
implementation("io.franzbecker:gradle-lombok:5.0.0")
implementation("info.solidsoft.gradle.pitest:gradle-pitest-plugin:1.19.0-rc.2")
implementation("io.freefair.gradle:lombok-plugin:9.2.0")

// Spotless dropped Java 8 support in version 2.33.0
// spotless-plugin-gradle dropped Java <17 support in version 8.0.0
if (JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_17)) {
implementation("com.diffplug.spotless:spotless-plugin-gradle:8.2.0")
implementation("io.github.cosmicsilence:gradle-scalafix:0.2.2")
implementation("io.github.cosmicsilence:gradle-scalafix:0.2.6")
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.yubico.gradle.pitest.tasks

import groovy.xml.XmlUtil
import groovy.xml.XmlParser

import info.solidsoft.gradle.pitest.PitestTask
import org.gradle.api.DefaultTask
Expand Down
34 changes: 1 addition & 33 deletions buildSrc/src/main/groovy/project-convention-lombok.gradle
Original file line number Diff line number Diff line change
@@ -1,36 +1,4 @@
import io.franzbecker.gradle.lombok.task.DelombokTask

plugins {
id "java"
id "io.franzbecker.gradle-lombok"
}

lombok {
version = "1.18.24"
sha256 = "d3584bc2db03f059f984fb0a9c119aac1fa0da578a448e69fc3f68b36584c749"
}

tasks.withType(AbstractCompile.class) {
dependsOn(tasks.verifyLombok)
}

task delombok(type: DelombokTask.class, dependsOn: tasks.classes) {
ext.outputDir = file("${buildDir}/delombok")
outputs.dir(outputDir)
project.sourceSets.main.java.srcDirs.forEach {
if (!it.exists()) {
it.mkdirs()
}
inputs.dir(it)
args(it, "-d", outputDir)
}
doFirst {
outputDir.deleteDir()
}
}

javadoc {
dependsOn(delombok)
source = tasks.delombok.outputDir
inputs.dir(tasks.delombok.outputDir)
id "io.freefair.lombok"
}
35 changes: 35 additions & 0 deletions buildSrc/src/main/kotlin/project-convention-java.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,38 @@ tasks.withType(JavaCompile::class) {
sourceCompatibility = "1.8"
}
}

tasks.register<Test>("testJava8") {
javaLauncher.set(javaToolchains.launcherFor {
languageVersion.set(JavaLanguageVersion.of(8))
})
tasks["check"].dependsOn(this)
}

tasks.register<Test>("testJava11") {
javaLauncher.set(javaToolchains.launcherFor {
languageVersion.set(JavaLanguageVersion.of(11))
})
tasks["check"].dependsOn(this)
}

tasks.register<Test>("testJava17") {
javaLauncher.set(javaToolchains.launcherFor {
languageVersion.set(JavaLanguageVersion.of(17))
})
tasks["check"].dependsOn(this)
}

tasks.register<Test>("testJava21") {
javaLauncher.set(javaToolchains.launcherFor {
languageVersion.set(JavaLanguageVersion.of(21))
})
tasks["check"].dependsOn(this)
}

tasks.register<Test>("testJava25") {
javaLauncher.set(javaToolchains.launcherFor {
languageVersion.set(JavaLanguageVersion.of(25))
})
tasks["check"].dependsOn(this)
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ plugins {
}

pitest {
pitestVersion.set("1.15.0")
pitestVersion.set("1.20.3")
timestampedReports.set(false)

outputFormats.set(listOf("XML", "HTML"))
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
2 changes: 1 addition & 1 deletion webauthn-server-attestation/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ dependencies {
testRuntimeOnly("uk.org.lidalia:slf4j-test")
}

val integrationTest = task<Test>("integrationTest") {
val integrationTest = tasks.register<Test>("integrationTest") {
description = "Runs integration tests."
group = "verification"

Expand Down
12 changes: 6 additions & 6 deletions webauthn-server-core/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
plugins {
`java-library`
id("me.champeau.jmh") version "0.6.8"
// id("me.champeau.jmh") version "0.7.3"
`project-convention-java`
`project-convention-scala`
`project-convention-lombok`
Expand Down Expand Up @@ -42,13 +42,13 @@ dependencies {
}
}

jmhImplementation(platform(project(":test-platform")))
jmhRuntimeOnly("org.slf4j:slf4j-nop")
// jmhImplementation(platform(project(":test-platform")))
// jmhRuntimeOnly("org.slf4j:slf4j-nop")
}

configurations.jmhRuntimeClasspath {
exclude(module = "slf4j-test")
}
// configurations.jmhRuntimeClasspath {
// exclude(module = "slf4j-test")
// }

tasks.withType(Jar::class) {
manifest {
Expand Down
12 changes: 6 additions & 6 deletions yubico-util/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
plugins {
`java-library`
id("me.champeau.jmh") version "0.6.8"
// id("me.champeau.jmh") version "0.7.3"
`project-convention-java`
`project-convention-scala`
`project-convention-lombok`
Expand Down Expand Up @@ -30,13 +30,13 @@ dependencies {
testImplementation("org.scalatestplus:junit-4-13_2.13")
testImplementation("org.scalatestplus:scalacheck-1-16_2.13")

jmhImplementation(platform(project(":test-platform")))
jmhRuntimeOnly("org.slf4j:slf4j-nop")
// jmhImplementation(platform(project(":test-platform")))
// jmhRuntimeOnly("org.slf4j:slf4j-nop")
}

configurations.jmhRuntimeClasspath {
exclude(module = "slf4j-test")
}
// configurations.jmhRuntimeClasspath {
// exclude(module = "slf4j-test")
// }

tasks.jar {
manifest {
Expand Down
Loading