This is an automated email from the ASF dual-hosted git repository.

robbie pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git


The following commit(s) were added to refs/heads/main by this push:
     new ef09a95fb2 NO-JIRA: add details to RELEASING.adoc about checking 
staged release build reproducibility
ef09a95fb2 is described below

commit ef09a95fb206af49bc91c0b4966f15075b292c10
Author: Robbie Gemmell <[email protected]>
AuthorDate: Tue Oct 22 13:14:11 2024 +0100

    NO-JIRA: add details to RELEASING.adoc about checking staged release build 
reproducibility
---
 RELEASING.adoc | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 72 insertions(+)

diff --git a/RELEASING.adoc b/RELEASING.adoc
index 0178893632..6e26836cd0 100644
--- a/RELEASING.adoc
+++ b/RELEASING.adoc
@@ -170,6 +170,78 @@ Give the 
https://repository.apache.org/#stagingRepositories[staging repository]
 If everything looks good close the staging repo using the "Close" button on 
ASF Nexus website, locking it from further modification and exposing its 
contents at a staging URL to allow testing.
 Set a description such as "ActiveMQ Artemis <version> (RC1)" while closing.
 
+Note the staging repo URL, of form 
`\https://repository.apache.org/content/repositories/orgapacheactivemq-<repo-id>`
+
+== Verify build reproducibility
+
+We can now check the reproducibility of the staged build using the tooling 
from https://github.com/jvm-repo-rebuild/reproducible-central[Reproducible 
Central].
+The main tooling documentation can be found at 
https://github.com/jvm-repo-rebuild/reproducible-central/blob/master/doc/TOOLS.md[TOOLS.md].
+There is a nightly monitoring of new staged/released versions, with related 
helper commands, at 
https://github.com/jvm-repo-rebuild/reproducible-central/blob/master/doc/add.md[add.md].
+
+Based on these, at the time of writing instructions to perform a 
reproducibility check of the staged build would be as follows.
+
+Clone the repository:
+
+[,console]
+----
+git clone https://github.com/jvm-repo-rebuild/reproducible-central
+cd reproducible-central
+----
+
+If you are using podman, indicate so:
+
+[,console]
+----
+export RB_OCI_ENGINE=podman
+----
+
+If you use podman on an SELinux host (e.g Fedora, RHEL, etc), set volume flags 
to allow container mounts to be made within your checkout:
+
+[,console]
+----
+export RB_OCI_VOLUME_FLAGS=":Z,rw"
+----
+
+Generate the new `artemis-<version>.buildspec` file based on the last 
previously created buildspec:
+
+[,console]
+----
+bin/add-new-release.sh 
content/org/apache/activemq/artemis/artemis-<previous-version>.buildspec 
<version> orgapacheactivemq-<repo-id>
+----
+
+Run the reproducibility check using the newly created buildspec:
+
+[,console]
+----
+./rebuild.sh content/org/apache/activemq/artemis/artemis-<version>.buildspec 
orgapacheactivemq-<repo-id>
+----
+
+In both of the script commands above, the last argument is the name of the 
staging repository for the release build, to which comparison will be made by 
setting it as the reference repo.
+The generalised "staging" group repository name can also be used, however it 
has a sync/setup delay, and access to other builds, which the specific build 
repo alone does not.
+If the final argument is omitted, the comparison will be run with Maven 
Central as the reference repo.
+
+During the check, the release tag is checked out, and the build performed in a 
container according to the buildspec details.
+For each module, the Maven Artifact Plugin is used to compare the freshly 
built output, in checkout found under 
`content/org/apache/activemq/artemis/buildcache/artemis-pom/`, with the staged 
build artifact downloaded from the reference repo, i.e the staging repo or 
Maven Central.
+The downloaded reference files are themselves stored under 
`content/org/apache/activemq/artemis/buildcache/artemis-pom/target/reference/org.apache.activemq/`
+
+For doing re-runs or checking future versions, `git clean` can be used to wipe 
all the build and local repo files that are created within the checkout, if you 
dont just create a fresh checkout.
+
+To do a dry run and see the files/dirs that would be deleted by cleaning, run:
+
+[,console]
+----
+git clean -n -d -x
+----
+
+To actually delete the files/dirs, run:
+
+[,console]
+----
+git clean -f -d -x
+----
+
+In both cases, if there are any files you wish to save from deletion, 
additionally use the `-e` option to exclude them.
+
 == Stage the Release
 
 Use the closed staging repo contents to populate the dist dev area with the 
official release artifacts for voting.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to