8000 Build QOSDK from source in quarkus-next workflow by Pepo48 · Pull Request #48174 · keycloak/keycloak · GitHub
[go: up one dir, main page]

Skip to content

Build QOSDK from source in quarkus-next workflow - #48174

Merged
vmuzikar merged 1 commit into
keycloak:mainfrom
Pepo48:issue-48129
Apr 21, 2026
Merged

vmuzikar merged 1 commit into
keycloak:mainfrom
Pepo48:issue-48129

Conversation

@Pepo48
@Pepo48 Pepo48 commented Apr 16, 2026 •
Copy link
Copy Markdown
Contributor

Closes: #48129

@vmuzikar the build phase didn't fail previously because quarkus.build.version wasn't correctly changed to the SNAPSHOT. I fixed that by adding Restore Quarkus snapshot cache to make it available and thus fully resolvable. Since set-quarkus-version.sh silently swallows the errors (afaik by design), I haven't realized/noticed it. Sorry for that.

With that fixed, I got:

Non-resolvable import POM: io.quarkus.platform:quarkus-operator-sdk-bom:pom:999-SNAPSHOT (absent)
'dependencies.dependency.version' for io.quarkiverse.operatorsdk:quarkus-operator-sdk:jar is missing
'dependencies.dependency.version' for io.quarkiverse.operatorsdk:quarkus-operator-sdk-bundle-generator:jar is missing

which is exactly what we discussed yesterday, even without evidence.

From what I see only 2 direct dependencies rely on quarkus-operator-sdk-bom BOM -
io.quarkiverse.operatorsdk:quarkus-operator-sdk and io.quarkiverse.operatorsdk:quarkus-operator-sdk-bundle-generator + transitive JOSDK dependencies (operator-framework-core, micrometer-support).

So as I mentioned yesterday, I wanted to try to build QOSDK instead of the full platform build. I did some digging - I compared io.quarkus.platform:quarkus-operator-sdk-bom:3.33.1 vs. io.quarkiverse.operatorsdk:quarkus-operator-sdk-bom:7.7.3:

  • all 9 shared dependencies have identical versions at the point of release (JOSDK 5.3.2, QOSDK 7.7.3),
  • the platform BOM adds only 2 metadata artifacts (*-quarkus-platform-descriptorand *-quarkus-platform-properties - I assume this is not essential for our use case at all, most likely used by some Quarkus tooling, DEV UI maybe?) cc: @michalvavrik
  • no dependency version overrides in either direction as it was already suggested yesterday.

This makes me believe that we could use it instead of full platform build. The PR builds QOSDK from its main branch with -Dquarkus.version=999-SNAPSHOT. It produces io.quarkiverse.operatorsdk:quarkus-operator-sdk-bom with the current QOSDK snapshot version (the version is dynamically parsed from the QOSDK pom.xml in order to inject it to operator/pom.xml). Uses released JOSDK, which is handy, because we don't need to build JOSDK from source as we were afraid. And most importantly it takes ~20 seconds.

The only difference I can see now is that quarkus-next builds QOSDK from main, so the actual versions tested will be newer than production, which probably isn't that big of a deal (!?). Alternatively we can try to build it from a release tag, but I haven't try that so far. The fact that the JOSDK version on QOSDK main is always equal to or newer than the JOSDK version in the platform BOM is probably more important, right?

Anyway, this is the best I could come up with so far, so please give it a thorough look. 😊
Here are some preliminary results from my fork testing:

PRs that needs to be applied to get such results are:

Closes: keycloak#48129

Signed-off-by: Peter Zaoral <pzaoral@redhat.com>
@michalvavrik
michalvavrik 8000 commented Apr 17, 2026
Copy link
Copy Markdown
Member

the platform BOM adds only 2 metadata artifacts (*-quarkus-platform-descriptorand *-quarkus-platform-properties - I assume this is not essential for our use case at all, most likely used by some Quarkus tooling, DEV UI maybe?) cc: @michalvavrik

We don't need them.

@michalvavrik
Copy link
Copy Markdown
Member

The only difference I can see now is that quarkus-next builds QOSDK from main, so the actual versions tested will be newer than production, which probably isn't that big of a deal (!?). Alternatively we can try to build it from a release tag, but I haven't try that so far. The fact that the JOSDK version on QOSDK main is always equal to or newer than the JOSDK version in the platform BOM is probably more important, right?

We are testing Quarkus main branch, so you need matching QOSDK in case there are breaking changes where QOSDK was adapted to Quarkus. But I think you have a point, if there are (for us) breaking changes in JOSDK, we will see that, but we will only be able to fix the failures if there is backwards compatible solution. I think it is always going to be trade-off whatever way you decide to go.

@vmuzikar
Copy link
Copy Markdown
Contributor

The only difference I can see now is that quarkus-next builds QOSDK from main, so the actual versions tested will be newer than production, which probably isn't that big of a deal (!?).

This is actually desired, and it was like that even before with the nightly snapshots built by the Quarkus team, no? We definitely want to test whatever comes in the next Quarkus release which includes QOSDK and transitively upgraded JOSDK.

The fact that the JOSDK version on QOSDK main is always equal to or newer than the JOSDK version in the platform BOM is probably more important, right?

This is unexpected, no? I would assume the platform will be using what's latest in the QOSDK main.

@vmuzikar vmuzikar left a comment
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, nice work @Pepo48!

@Pepo48
Pepo48 marked this pull request as ready for review April 21, 2026 13:16
@Pepo48
Pepo48 requested a review from a team as a code owner April 21, 2026 13:16
@Pepo48
Pepo48 commented Apr 21, 2026
Copy link
Copy Markdown
Contributor Author

@michalvavrik do you want to take one more look?

@vmuzikar
vmuzikar merged commit 66de09a into keycloak:main Apr 21, 2026
89 che 8000 cks passed
@stianst stianst mentioned this pull request Jun 1, 2026
sashyo pushed a commit to tide-foundation/keycloak-IGA that referenced this pull request Jul 20, 2026
Closes: keycloak#48129

Signed-off-by: Peter Zaoral <pzaoral@redhat.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Stabilize Operator CI in quarkus-next

3 participants

0