Skip to content

[CI] Add use-snapshot option to reuse pre-built Quarkus snapshots#960

Draft
zakkak wants to merge 4 commits into
graalvm:defaultfrom
zakkak:2026-04-24-quarkus-snapshots
Draft

[CI] Add use-snapshot option to reuse pre-built Quarkus snapshots#960
zakkak wants to merge 4 commits into
graalvm:defaultfrom
zakkak:2026-04-24-quarkus-snapshots

Conversation

@zakkak
Copy link
Copy Markdown
Collaborator

@zakkak zakkak commented Apr 24, 2026

Adaptation of https://github.com/quarkusio/install-quarkus-snapshots-action/ to reduce CI overhead.

We've updated the Quarkus Ecosystem CI to use pre-built Quarkus SNAPSHOT artifacts instead of building Quarkus from source on every run. This significantly reduces CI execution time and resource usage, since the ~20 minute Quarkus build step is replaced by downloading a pre-built Maven repository archive.
The pre-built snapshots are published as GitHub releases and are validated to be less than 36 hours old to ensure freshness. If a pre-built snapshot is unavailable for any reason, the CI automatically falls back to building Quarkus from source.
For workflows outside the Ecosystem CI: If your GitHub Actions workflow needs Quarkus SNAPSHOT artifacts during the build (e.g., for testing against the latest Quarkus), you can use the install-quarkus-snapshots-action to install them into your local Maven repository with a single step.

Assisted-by: Bob

Being tested in https://github.com/zakkak/mandrel/actions/runs/25021568549

@oracle-contributor-agreement oracle-contributor-agreement Bot added the OCA Verified All contributors have signed the Oracle Contributor Agreement. label Apr 24, 2026
@zakkak zakkak marked this pull request as draft April 24, 2026 19:36
@zakkak zakkak changed the title 2026 04 24 quarkus snapshots [CI] Add use-snapshot option to reuse pre-built Quarkus snapshots Apr 24, 2026
@zakkak zakkak force-pushed the 2026-04-24-quarkus-snapshots branch 3 times, most recently from cb854c8 to 51358aa Compare April 24, 2026 19:52
@zakkak
Copy link
Copy Markdown
Collaborator Author

zakkak commented Apr 24, 2026

As suspected it fails due to some missing dependencies

Error:  Failed to execute goal on project quarkus-integration-test-main: Could not resolve dependencies for project io.quarkus:quarkus-integration-test-main:jar:999-SNAPSHOT
Error:  dependency: io.quarkus:quarkus-integration-test-class-transformer:jar:999-SNAPSHOT (compile)
Error:  	Could not find artifact io.quarkus:quarkus-integration-test-class-transformer:jar:999-SNAPSHOT
Error:  dependency: io.quarkus:quarkus-integration-test-shared-library:jar:999-SNAPSHOT (compile)
Error:  	Could not find artifact io.quarkus:quarkus-integration-test-shared-library:jar:999-SNAPSHOT
Error:  dependency: io.quarkus:quarkus-integration-test-common-jpa-entities:jar:999-SNAPSHOT (compile)
Error:  	Could not find artifact io.quarkus:quarkus-integration-test-common-jpa-entities:jar:999-SNAPSHOT
Error:  dependency: io.quarkus:quarkus-integration-test-class-transformer-deployment:pom:999-SNAPSHOT (test)
Error:  	Could not find artifact io.quarkus:quarkus-integration-test-class-transformer-deployment:pom:999-SNAPSHOT
Error:  -> [Help 1]

This is because these artifacts are not deployed as they are only used by quarkus core integration tests. I need to adapt the workflow to build those explicitly for snapshots.

The workflow also spends ~1m downloading deps because when we use a Quarkus snaphost we no longer use the GH cache. Might be worth fixing this as well.

@zakkak
Copy link
Copy Markdown
Collaborator Author

zakkak commented Apr 24, 2026

Things look better with -am

Some tests still failing, e.g. gradle tooling fails with

Error:  Failed to execute goal on project quarkus-integration-test-gradle-plugin: Could not resolve dependencies for project io.quarkus:quarkus-integration-test-gradle-plugin:jar:999-SNAPSHOT
Error:  dependency: io.quarkus:io.quarkus.gradle.plugin:pom:999-SNAPSHOT (compile)
Error:  	G:io.quarkus NOT allowed from gradle (https://repo.gradle.org/artifactory/libs-releases, default, releases)
Error:  dependency: io.quarkus.extension:io.quarkus.extension.gradle.plugin:pom:999-SNAPSHOT (compile)
Error:  	G:io.quarkus.extension NOT allowed from gradle (https://repo.gradle.org/artifactory/libs-releases, default, releases)
Error:  -> [Help 1]

@zakkak zakkak force-pushed the 2026-04-24-quarkus-snapshots branch 4 times, most recently from 1cda064 to 17e1bfb Compare April 25, 2026 23:58
@jerboaa
Copy link
Copy Markdown
Collaborator

jerboaa commented Apr 27, 2026

Hmm, we usually build Quarkus with a new version of GraalVM SDK (in order to ensure they still support the right JDK minimal version). With this move we no longer get this benefit or do we?

@zakkak
Copy link
Copy Markdown
Collaborator Author

zakkak commented Apr 27, 2026

Hmm, we usually build Quarkus with a new version of GraalVM SDK (in order to ensure they still support the right JDK minimal version). With this move we no longer get this benefit or do we?

True, with this move we no longer test whether Quarkus can build with the latest GraalVM/Mandrel SDK.

We currently do this when maven-deploy-local is set. I am thinking of ignoring use-snapshot when maven-deploy-local and disabling maven-deploy-local on the nightly builds. Then we could have a full CI run (with a quarkus build from source and maven-deploy-local) run on a bi-weekly base or similar. WDYT?

@jerboaa
Copy link
Copy Markdown
Collaborator

jerboaa commented Apr 27, 2026

Hmm, we usually build Quarkus with a new version of GraalVM SDK (in order to ensure they still support the right JDK minimal version). With this move we no longer get this benefit or do we?

True, with this move we no longer test whether Quarkus can build with the latest GraalVM/Mandrel SDK.

We currently do this when maven-deploy-local is set. I am thinking of ignoring use-snapshot when maven-deploy-local and disabling maven-deploy-local on the nightly builds. Then we could have a full CI run (with a quarkus build from source and maven-deploy-local) run on a bi-weekly base or similar. WDYT?

Sounds like a good plan to me. Every two weeks should be enough as a ball-park frequency of asserting nothing broke in that regard.

@zakkak zakkak force-pushed the 2026-04-24-quarkus-snapshots branch 4 times, most recently from 25192eb to 324fcbc Compare April 27, 2026 21:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

OCA Verified All contributors have signed the Oracle Contributor Agreement.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants