-
Notifications
You must be signed in to change notification settings - Fork 1.2k
ci: optimize GHA caching in ci.yaml using prime-maven-cache composite action #13954
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
Closed
Closed
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| name: 'Prime Maven Cache' | ||
| description: 'Pre-populates Maven dependencies into ~/.m2/repository and GitHub Actions Cache' | ||
|
|
||
| runs: | ||
| using: 'composite' | ||
| steps: | ||
| # JDK version does not impact priming or matching the Maven cache, as cache keys are derived | ||
| # from ${{ runner.os }} and SHA-256 hashes of pom.xml files, not the JDK version. | ||
| # We default to the latest LTS version (25) to run the pre-population step. | ||
| # Furthermore, GitHub Actions Cache entries are immutable by primary key: downstream jobs | ||
| # restoring this cache can run 'mvn install' or add SNAPSHOT JARs locally without ever | ||
| # polluting or overwriting the remote cache. | ||
| - uses: actions/setup-java@c1e323688fd81a25caa38c78aa6df2d33d3e20d9 # v4 | ||
| id: setup-java | ||
| with: | ||
| java-version: 25 | ||
| distribution: 'temurin' | ||
| cache: 'maven' | ||
| # Only run mvn test-compile if this is a primary key CACHE MISS (new/modified pom.xml). | ||
| # If cache-hit == 'true', ~/.m2/repository is already warm in GitHub Actions Cache and | ||
| # this step is skipped entirely (~3s total job execution!). | ||
| # Why 'mvn test-compile'? | ||
| # Using test-compile (instead of compile) downloads both production dependencies (compile scope) | ||
| # AND test libraries (test scope: JUnit, Mockito, Truth, Testcontainers) into ~/.m2/repository. | ||
| # When this job completes, setup-java saves ~/.m2/repository to GitHub Actions Cache. | ||
| # Downstream unit test jobs restore this cache and run offline without downloading any JARs from Maven Central. | ||
| - name: Prime Maven Cache | ||
| if: steps.setup-java.outputs.cache-hit != 'true' | ||
| shell: bash | ||
| run: mvn test-compile -DskipTests -Pquick-build -T 1C --batch-mode --no-transfer-progress | ||
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.
There are two improvements needed here:
25may cause setup failures or use unstable early-access builds.mvn installis used for building snapshot artifacts to the local~/.m2repository.References
mvn installis used for building snapshot artifacts to the local~/.m2repository.