Skip to content
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

Draft: JPMS Support #14

Draft
wants to merge 40 commits into
base: master
Choose a base branch
from
Draft

Draft: JPMS Support #14

wants to merge 40 commits into from

Commits on Apr 15, 2024

  1. chore(ci): apply hardening to ci jobs

    - chore: apply 'Harden Runner' auditing to all ci tasks
    - chore: apply `persist-credentials: false` to checkout tasks
    - chore: publish dependency graph and add dependency review check
    - chore: add codeql scan job (temp)
    
    Bumps [actions/checkout](https://github.com/actions/checkout) from 3.6.0 to 4.1.1.
    - [Release notes](https://github.com/actions/checkout/releases)
    - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
    - [Commits](actions/checkout@v3.6.0...b4ffde6)
    
    Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 2.5.1 to 4.1.3.
    - [Release notes](https://github.com/actions/dependency-review-action/releases)
    - [Commits](actions/dependency-review-action@0efb1d1...9129d7d)
    
    ---
    updated-dependencies:
    - dependency-name: actions/checkout
      dependency-type: direct:production
      update-type: version-update:semver-major
    - dependency-name: actions/dependency-review-action
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: StepSecurity Bot <[email protected]>
    Signed-off-by: Sam Gammon <[email protected]>
    Signed-off-by: dependabot[bot] <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    2 people authored and sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    ac7c5c7 View commit details
    Browse the repository at this point in the history
  2. chore(ci): refactor into reusable workflows

    This change refactors the main CI workflow into two new workflows, `on.pr.yml` and
    `on.push.yml`, which each call into the exiting CI job as a reusable workflow.
    
    This has the nice benefit of putting all tests, checks, builds, etc., on one screen
    during development on GitHub, allows customization of the PR vs. push flow, and yet
    keeps behavior fully consistent between the two.
    
    - chore: move ci jobs to `workflow_call` trigger
    - chore: add entrypoint jobs for PR and Push events
    - chore: cleanup permissions and dispatch checks/tests
    
    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    2bee2a2 View commit details
    Browse the repository at this point in the history
  3. chore(ci): switch to enforced hardening mode

    This changeset switches the StepSecurity hardening action to enforced mode, where
    previously it was running in `audit` mode. Now, audit logs have been gathered and
    it is time to seal off the list of accessible network endpoints for a given job.
    
    - chore: gather and apply network endpoints for each job
    - chore: move to `block` mode for `egress-policy` in `step-security/harden-runner`
    
    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    57d6114 View commit details
    Browse the repository at this point in the history
  4. feat(ci): slsa provenance support

    This changeset adds SLSA 3+ provenance support to the workflow. The main CI run has now been
    split into two: `ci.build.yml`, which only builds the library and is provenance-capable, and
    `ci.test.yml`, which is the previous CI logic.
    
    The regular build logic is applied only on push, and can be applied on PRs too, with publish
    of provenance material turned off. The test suite is invoked from PRs.
    
    The workflows have been split into build/test phases to avoid publishing provenance data and
    GitHub artifacts for build matrix outputs. JARs are uniform across OS targets, so there is no
    need to gather and publish for more than Ubuntu.
    
    - feat: add slsa support to build workflow
    - chore: split `test` into `build` and `test` workflows
    - chore: use new workflows (build/test) from push/pr triggers
    
    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    9c737bf View commit details
    Browse the repository at this point in the history
  5. chore(ci): build with --strict-checksums

    Fails the build if any downloaded dependencies fail their checksum
    verification.
    
    - chore: add `--strict-checksums` flag to `mvnw` calls in ci
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    a785edf View commit details
    Browse the repository at this point in the history
  6. chore(ci): build avoidance (javadoc, gpg)

    - chore: don't rebuild javadoc during tests in ci
    - chore: don't run with gpg enabled in ci
    
    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    b7fd83c View commit details
    Browse the repository at this point in the history
  7. chore(build): parameterize deploy repositories

    Adds two build parameters
    - `publishing.repository.snapshots`: Snapshot repo to deploy to
    - `publishing.repository.releases`: Releases repo to deploy to
    
    Both default to their current values, Sonatype. This small inert
    change allows a fork to easily publish to a different repository
    without resorting to a code change.
    
    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    0c3ea61 View commit details
    Browse the repository at this point in the history
  8. feat(build): sigstore publishing plugin

    This changeset adds the Maven Sigstore plugin for use during
    publishing to Sonatype and other public repositories.
    
    - chore: add sigstore plugin to build
    
    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    9bb5597 View commit details
    Browse the repository at this point in the history
  9. chore(ci): document gha workflows

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    8beadb8 View commit details
    Browse the repository at this point in the history
  10. chore(ci): add spdx plugin

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    35d8a1d View commit details
    Browse the repository at this point in the history
  11. feat(jpms): add module-info definition for guava

    This changeset adds full support for modular Java builds in Guava,
    and in libraries which depend on Guava.
    
    The Guava JAR for JRE now structures as a Multi-Release JAR, with
    a module definition situated in `META-INF/versions/9/`. Guava
    remains compatible with JDK 8.
    
    - feat: add `module-info.java` to `guava` module
    - chore: update `guava` to build MRJAR
    - chore: adjust dev version → `1.0-HEAD-[jre|android]-SNAPSHOT`
    - chore: upgrade maven compiler plugin → `3.12.1`
    
    Fixes and closes google#2970
    
    Relates-To: elide-dev/jpms#1
    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    7fe7277 View commit details
    Browse the repository at this point in the history
  12. fixup! version update misalignment

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    7178b96 View commit details
    Browse the repository at this point in the history
  13. fixup! working bundle without duplicated classes

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    813a8a0 View commit details
    Browse the repository at this point in the history
  14. fixup! compile Xlint

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    27b60d0 View commit details
    Browse the repository at this point in the history
  15. fixup! compiler args for jdk11+

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    0dfe0f8 View commit details
    Browse the repository at this point in the history
  16. fix: generate checksums at install

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    9bdae05 View commit details
    Browse the repository at this point in the history
  17. chore: cleanup suppressions in Striped64.java

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    f098e63 View commit details
    Browse the repository at this point in the history
  18. chore(labs): improve build and test speed

    This changeset optimizes the Guava build significantly by enabling
    parallel build and test features supported by Maven. With these
    flags enabled, only a few tests exhibit flaky behavior; applying a
    sensible count of test retries (3) solves the problem.
    
    As a result, the testsuite can now be executed often, because it
    takes about 2 minutes to run. Building is also much faster. After
    benchmarking different configurations, 2-threads-per-core and
    2-test-forks-per-core seems optimal:
    
    ```
    [INFO] Guava Maven Parent ..................... SUCCESS [  0.121 s]
    [INFO] Guava: Google Core Libraries for Java .. SUCCESS [  9.681 s]
    [INFO] Guava BOM .............................. SUCCESS [  0.120 s]
    [INFO] Guava Testing Library .................. SUCCESS [ 47.883 s]
    [INFO] Guava Unit Tests ....................... SUCCESS [01:57 min]  <--
    [INFO] Guava GWT compatible libs .............. SUCCESS [  6.909 s]
    ```
    
    When built and executed serially:
    ```
    [INFO] Guava Maven Parent ..................... SUCCESS [  0.129 s]
    [INFO] Guava: Google Core Libraries for Java .. SUCCESS [ 15.653 s]
    [INFO] Guava BOM .............................. SUCCESS [  0.064 s]
    [INFO] Guava Testing Library .................. SUCCESS [01:26 min]
    [INFO] Guava Unit Tests ....................... SUCCESS [06:26 min] <--
    [INFO] Guava GWT compatible libs .............. SUCCESS [ 11.092 s]
    ```
    
    Benchmark hardware:
    - Apple M2 Max, 96GB RAM
    - macOS Sonoma 14.3.1
    - GraalVM CE JVM 21.0.2
    
    ```
    openjdk version "21.0.2" 2024-01-16
    OpenJDK Runtime Environment GraalVM CE 21.0.2+13.1 (build 21.0.2+13-jvmci-23.1-b30)
    OpenJDK 64-Bit Server VM GraalVM CE 21.0.2+13.1 (build 21.0.2+13-jvmci-23.1-b30, mixed mode, sharing)
    ```
    
    - chore: enable parallel build
    - chore: enable parallel test execution
    - chore: enable parallel gc for maven
    - chore: tune tiered compilation for maven
    - chore: tune thread count for maven
    - fix: enable test retries (max = 3) for parallel-flaky tests
    
    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    ee711e1 View commit details
    Browse the repository at this point in the history
  19. chore: upgrade maven → 3.9.6

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    9fc8648 View commit details
    Browse the repository at this point in the history
  20. fixup! conditional spdx, suppress spdx for irrelevant ci jobs

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    a51c9be View commit details
    Browse the repository at this point in the history
  21. fixup! skip gpg in test (another)

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    672070c View commit details
    Browse the repository at this point in the history
  22. fixup! osgi and mrjars/jpms

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    5f2d9a0 View commit details
    Browse the repository at this point in the history
  23. feat(jpms): modularize failureaccess + testlib

    This change adds a `module-info.java` definition for the ancillary
    `failureaccess` and `testlib` libraries. Test Lib is kept as an
    `open module` so that it can be reflectively introspected.
    
    - feat(jpms): add `module-info.java` to `failureaccess`
    - feat(jpms): add `module-info.java` to `testlib`
    - fix: necessary fixes to get testsuite running on modular java
    
    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    0850496 View commit details
    Browse the repository at this point in the history
  24. fix: javadoc warning fixes

    This changeset generally fixes all Javadoc warnings at JVM 21, and
    upgrades the LTS Javadoc release to 21. Slight code changes have
    been made to fix Javadoc issues; no logic has changed.
    
    - fix: various javadoc flag fixes
    - fix: deprecations and other javadoc warnings
    - chore: upgrade javadoc plugin to latest
    - chore: upgrade javadoc java spec version → 21
    
    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    f305713 View commit details
    Browse the repository at this point in the history
  25. fixup! cleanup of redundant test args

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    1164e15 View commit details
    Browse the repository at this point in the history
  26. chore: add coverage via maven-jacoco-plugin

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    5ec3d51 View commit details
    Browse the repository at this point in the history
  27. fixup! wrapper sha256 breaks windows build

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    ea03b94 View commit details
    Browse the repository at this point in the history
  28. fixup! testlib mrjar

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    8f17013 View commit details
    Browse the repository at this point in the history
  29. fixup! -Xlint:-removal on jdk8

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    7b8b21d View commit details
    Browse the repository at this point in the history
  30. fixup! version mappings in guava module

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    f903cd5 View commit details
    Browse the repository at this point in the history
  31. chore: move benchmarks to dedicated module

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    a5e2c92 View commit details
    Browse the repository at this point in the history
  32. fixup! drop requires java.base

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    474b0c7 View commit details
    Browse the repository at this point in the history
  33. fixup! don't export .thirdparty.publicsuffix

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    4c46bdb View commit details
    Browse the repository at this point in the history
  34. fixup! move to requires static jdk.unsupported

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    531a583 View commit details
    Browse the repository at this point in the history
  35. fixup! release version for failureaccess

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    b076a30 View commit details
    Browse the repository at this point in the history
  36. fixup! property for failureaccess.version

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    8ad65d9 View commit details
    Browse the repository at this point in the history
  37. fixup! failureaccess needs relative path to parent pom

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    d24b5f9 View commit details
    Browse the repository at this point in the history
  38. fixup! failureaccess mrjar structure, bundle plugin

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    49e26a7 View commit details
    Browse the repository at this point in the history
  39. chore: profile for signing

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    b9897a4 View commit details
    Browse the repository at this point in the history
  40. fixup! separate sigstore profile

    Signed-off-by: Sam Gammon <[email protected]>
    sgammon committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    135b2b8 View commit details
    Browse the repository at this point in the history