Repository navigation
Build Quarkus from source in quarkus-next workflow #47892
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
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| name: Quarkus Snapshot Cache | ||
| description: Restores Quarkus snapshot artifacts built from quarkusio/quarkus main branch. | ||
|
|
||
| runs: | ||
| using: composite | ||
| steps: | ||
| - id: restore-quarkus-snapshot | ||
| name: Restore Quarkus snapshot cache | ||
| uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 | ||
| with: | ||
| path: | | ||
| ~/.m2/repository/io/quarkus | ||
| key: quarkus-snapshot- | ||
| restore-keys: | | ||
| quarkus-snapshot- |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
AFAIU, the plain Quarkus BOM is different from the Quarkus Platform BOM, specifically it includes lower number of transitive dependencies. This might give us inaccurate results. Should we be building Platform too, not just the core Quarkus artifacts?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We must use the core BOM. If it doesn't manage some deps, we would need to manage them for the snapshot scenarios manually. I don't think we should build the platform, because you can't be certain it gives you any advantage (e.g. you will probably want the latest released versions anyway). And you can never enforce that every platform dependency already adapted their main branch to the breaking changes in the core anyway (which is super edge case I guess).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't remember for sure how is it, but I think if you have multiple BOMs it is order dependent, so if we still had platform bom there, it would use the platform versions. anyway, @Pepo48 will give the right answer.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I didn't realize the fact there are other platform participants like Operator SDK, so good point at any rate.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess you see why I did the switch at first place - the platform is built in a separate repo, so I didn't want to add any more complexity. I thought that the platform BOM doesn't actually override any core dependency versions - it just re-exports them and adds community extension deps on top. So for our purposes, based on my experience, testing against the core BOM vs the platform one shouldn't make a practical difference for catching breakages.
Actually, our historical data proves it as well. When it makes sense, I add "quarkus-next" label to the commit name - every single one of the issues I could filter out based on that were caused by a core Quarkus change (build step API, config, TLS, OTel, Micrometer, datasources, JOSDK version bump...). None were triggered by a platform-only dependency.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe we depend on the Platform BOM with some dependencies in Keycloak (we omit explicitly defining their versions and just rely on the BOM), so I wonder how the quarkus-next build even works with the Core BOM that is missing those dependencies. Moreover, this might be a problem for the Operator, as stated correctly by Michal.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see. I guess the issue is that with the
sedcommand inprepare-quarkus-next.shI was targeting only the parentpom.xmland notoperator/pom.xmltoo (+ the fact that the platform bom is still to this day published to Sonatype, see my earlier investigation at #47501 (comment) - https://central.sonatype.com/repository/maven-snapshots/io/quarkus/platform/quarkus-operator-sdk-bom/999-SNAPSHOT/maven-metadata.xml, but we don't know for how long).So at this point you're right and our only viable is to build the platform from source too. Or wdyt?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FWIW I agree (or think if that is not how @Pepo48 meant it) that only building Quarkus 999-SNAPSHOT core BOM and the operator sdk bom (or downloading it from the sonatype, but then we should postpone it to after it is deployed by their nightly) should cover 99 % of scenarios. It should be good-enough only for nightly tests as platform participants shouldn't override deps managed by core. Unless we know about some other dependency managed by other platform participant.
But I don't mind either way, and building platform, apart of raising the execution time will cover all scenarios. So I'll leave it to you to decide. Thanks for your investigation.