Skip to content

Conversation

@vjovanov
Copy link
Member

@vjovanov vjovanov commented Nov 14, 2025

  1. Introduce ci.json where we store the matrix of JDK and OS and flags. If this file is changed, run all tests in batches.
  2. test-changed-metadata.yml should just check if metadata changes.
  3. test-changed-infrastructure.yml should test only a representative set of libraries.
  4. All commands now support a -Pcoordinates=k/n mode for batched execution.
  5. Give this repo the ❤️ it deserves and prepare it for AI coding.
  6. Abandon JDK 17. It will not scale for the incoming libraries.
  7. One stop shop testing command: ./gradlew testAllParallel -Pparallelism=n
  8. Documentation and structure cleanup. Start review with:
    • Look at docs/DEVELOPING.md
    • Look at docs/CI.md
    • Look at AGENTS.md

Fixes: #681

@vjovanov vjovanov changed the title CI: Simplify test workflows: remove test-all, introduce reusable test… Run a workflow per JDK version Nov 14, 2025
@vjovanov vjovanov force-pushed the vj/gh-681-test-matrix branch 13 times, most recently from 993c827 to 7f57c81 Compare November 17, 2025 13:53
@vjovanov vjovanov changed the title Run a workflow per JDK version Make tests run under the 256 tests limit Nov 17, 2025
@vjovanov vjovanov force-pushed the vj/gh-681-test-matrix branch 8 times, most recently from e6b41c7 to f2afabe Compare November 19, 2025 01:14
@vjovanov vjovanov changed the title Make tests run under the 256 tests limit Make tests run under the 256 tests limit; give this repo the ❤️ it deserves. Nov 20, 2025
@vjovanov vjovanov force-pushed the vj/gh-681-test-matrix branch from f4bc376 to 03c0189 Compare November 20, 2025 04:32
@vjovanov vjovanov requested review from ban-mi, melix and wirthi November 20, 2025 07:49
@vjovanov vjovanov added the high-priority This is a high priority issue. Should be fixed immediately. label Nov 20, 2025
Copy link
Member

@jormundur00 jormundur00 left a comment

Choose a reason for hiding this comment

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

Great work! Left a few comments, but all in all LGTM.

test-changed-infrastructure:
name: "🧪 ${{ matrix.coordinates }} (GraalVM for JDK ${{ matrix.version }} @ ${{ matrix.os }})"
if: needs.get-changed-infrastructure.result == 'success' && needs.get-changed-infrastructure.outputs.none-found != 'true' && github.repository == 'oracle/graalvm-reachability-metadata'
Copy link
Member

Choose a reason for hiding this comment

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

I don't think we need to check github.repository == 'oracle/graalvm-reachability-metadata' here, as if get-changed-infrastructure is skipped test-changed-infrastructure will also be skipped due to needs.get-changed-infrastructure.

name: "🧪 All build-logic triggered tests have passed"
runs-on: "ubuntu-22.04"
timeout-minutes: 1
if: ${{ always() }} && github.repository == 'oracle/graalvm-reachability-metadata'
Copy link
Member

Choose a reason for hiding this comment

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

Don't think we need the repository check here either, as it's already made if the needed prerequisite job is ran.

Copy link
Member Author

Choose a reason for hiding this comment

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

Fixed.

- '**.md'
- 'library-and-framework-list*.json'
paths:
- 'metadata/*'
Copy link
Member

Choose a reason for hiding this comment

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

Are we sure we want to check metadata/* and not metadata/** here? Not an expert on wokflow syntax, but as I understand the wildcard definitions here, * should only include direct metadata directory descendants, while metadata/** should include nested directories too.

If that's correct, we should probably change that in other places where /* is used.

Copy link
Member Author

Choose a reason for hiding this comment

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

Fixed.

@vjovanov
Copy link
Member Author

Since this is blocking us I will merge the PR and address the comments in the follow up PR.

@vjovanov vjovanov force-pushed the vj/gh-681-test-matrix branch from 42b1a57 to b9af88c Compare November 20, 2025 10:56
- All commands now support a -Pcoordinates=k/n mode for batched execution.
- One stop shop testing command: ./gradlew testAllParallel -Pparallelism=n
- Documentation and structure cleanup (docs).
- CLine support.
- Complete command cleanup and simplification.
@vjovanov vjovanov force-pushed the vj/gh-681-test-matrix branch from b9af88c to aaf3d18 Compare November 20, 2025 12:00
@vjovanov vjovanov merged commit d79b375 into master Nov 20, 2025
104 checks passed
Copy link
Member

@melix melix left a comment

Choose a reason for hiding this comment

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

This is a very large PR and tbh I'm not sure I can validate the changes, it's not trivial.

- name: "Install required tools"
run: |
curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sudo sh -s -- -b /usr/local/bin
curl -sSfL https://get.anchore.io/grype/v0.104.0/install.sh | sudo sh -s -- -b /usr/local/bin
Copy link
Member

Choose a reason for hiding this comment

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

Not different from the previous implementation, but running arbitrary shell commands from remote makes me kind of nervous. Maybe we should at least have a checksum to ensure the remote repo hasn't been compromised.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

high-priority This is a high priority issue. Should be fixed immediately.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make tests run under the 256 tests limit

3 participants