Skip to content

Conversation

@snazy
Copy link
Member

@snazy snazy commented Oct 15, 2025

Performs a bunch of verifications against a proposed (staged) release candidate using the new tools/verify-release/verify-release.sh script against Maven artifacts, main distributions and Helm chart.

Checks:

  • GPG signature and checksum verifications
  • All expected artifacts are present
  • Build artifacts are reproducible (minus known exceptions)
    • jar files
    • Main distribution zip/tarball
    • Helm chart
  • Build passes.
  • DISCLAIMER/LICENSE/NOTICE files are present in artifacts that require those

More information in the added web site page.

Fixes #2822

@github-project-automation github-project-automation bot moved this to PRs In Progress in Basic Kanban Board Oct 15, 2025
@snazy snazy force-pushed the release-verification branch 8 times, most recently from 9f81def to 29e8c26 Compare October 16, 2025 13:38
@snazy snazy changed the title [WIP] Shell script to verify a staged release release Shell script to verify staged release candidate artifacts Oct 16, 2025
@snazy snazy force-pushed the release-verification branch 11 times, most recently from b8f99e0 to bc3f147 Compare October 23, 2025 13:10
@snazy snazy marked this pull request as ready for review October 23, 2025 13:12
Performs a bunch of verifications against a proposed (staged) release candidate using the new `tools/verify-release/verify-release.sh` script against Maven artifacts, main distributions and Helm chart.

Checks:
* GPG signature and checksum verifications
* All expected artifacts are present
* Build artifacts are reproducible (minus known exceptions)
  * jar files
  * Main distribution zip/tarball
  * Helm chart
* Build passes.
* DISCLAIMER/LICENSE/NOTICE files are present in artifacts that require those

More information in the added web site page.

Fixes apache#2822
@snazy snazy force-pushed the release-verification branch from bc3f147 to f9dde4b Compare October 23, 2025 13:20
Copy link
Contributor

@adutra adutra left a comment

Choose a reason for hiding this comment

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

Excellent improvement that will greatly simplify release verification!

My impression is that the tool is mostly focusing on artifact comparison and reproducible builds. A possible future addition would be to actually test the distribution by building and running basic tests, including tests for Helm chart.

* Maven staging repository
* `DISCLAIMER`, `LICENSE` and `NOTICE` files are correct for the repository.
* Contents of jar artifacts `META-INF/LICENSE` and `META-INF/NOTICE` files are correct.
* All files have license headers if necessary.
Copy link
Contributor

Choose a reason for hiding this comment

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

Why not include a step to automate this?

I usually use the below to test the source distribution and check for licenses etc.

./gradlew rat test :checkForCopiedCode \
  :polaris-server:assemble \
  :polaris-server:quarkusAppPartsBuild --rerun \
  -Dquarkus.container-image.tag=${version} \
  -Dquarkus.container-image.build=true

Copy link
Member Author

Choose a reason for hiding this comment

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

The assumption is that CI, which performs all these checks, is "green".

Copy link
Member Author

@snazy snazy Oct 24, 2025

Choose a reason for hiding this comment

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

BTW: The script can keep (-k option) the (temporary) directory, which contains all the downloaded and locally built artifacts.
Tests can be run from there.

* Contents of jar artifacts `META-INF/LICENSE` and `META-INF/NOTICE` files are correct.
* All files have license headers if necessary.
This is (mostly) verified using the "rat" tool during builds/CI.
* No compiled artifacts are bundled in the source archive.
Copy link
Contributor

Choose a reason for hiding this comment

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

This could also be automated:

executable_files=$(find . -type f ! -size 0 | perl -lne 'print if -B' | xargs file | grep executable)
if [ -n "$executable_files" ]; then
  echo "Binary executable files found:"
  echo "$executable_files"
  exit 1
fi

Copy link
Member Author

Choose a reason for hiding this comment

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

Hm, I think the line 52 should read No disallowed binary artifacts are bundled in the source archive..
A strict "no binary artifacts at all" is difficult to achieve, as png and jpeg are binary.
Bash scripts for example are permitted, as those are "text" files, despite being executable.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Provide a script to verify a Polaris release candidate

2 participants