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

pkarwasz pushed a commit to branch feature/reproducibility-check
in repository https://gitbox.apache.org/repos/asf/logging-parent.git

commit ca3a9f8c079f19c61e3ff217ce1ab80aa6c92bd4
Author: Piotr P. Karwasz <[email protected]>
AuthorDate: Thu Oct 17 10:23:07 2024 +0200

    Add separate reproducibility check workflow
    
    Adds a reproducibility check workflow based on a Nexus repository and not 
the local Maven repo.
    
    We also deprecate the reproducibility check in `build-reusable.yaml`.
---
 .github/workflows/build-reusable.yaml              |  3 +-
 .../workflows/verify-reproducibility-reusable.yaml | 87 ++++++++++++++++++++++
 .../.11.x.x/verify_reproducibility_reusable.xml    | 11 +++
 src/site/antora/modules/ROOT/pages/features.adoc   |  4 +-
 4 files changed, 103 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/build-reusable.yaml 
b/.github/workflows/build-reusable.yaml
index 6b0b488..8862bcc 100644
--- a/.github/workflows/build-reusable.yaml
+++ b/.github/workflows/build-reusable.yaml
@@ -33,6 +33,7 @@ on:
         type: string
       reproducibility-check-enabled:
         description: Runs a reproducibility check on the build
+        deprecationMessage: Use `verify-reproducibility-reusable` instead
         default: true
         type: boolean
       site-enabled:
@@ -115,7 +116,7 @@ jobs:
             --show-version --batch-mode --errors --no-transfer-progress \
             -DtrimStackTrace=false \
             -DinstallAtEnd=true \
-            clean install
+            clean ${{ inputs.reproducibility-check-enabled && 'install' || 
'verify' }}
 
       # We upload tests results.
       - name: Upload test reports
diff --git a/.github/workflows/verify-reproducibility-reusable.yaml 
b/.github/workflows/verify-reproducibility-reusable.yaml
new file mode 100644
index 0000000..e023161
--- /dev/null
+++ b/.github/workflows/verify-reproducibility-reusable.yaml
@@ -0,0 +1,87 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+name: verify-reproducibility-reusable
+
+on:
+  workflow_call:
+    inputs:
+      java-version:
+        description: The Java compiler version
+        default: 17
+        type: string
+      maven-args:
+        description: Additional Maven arguments
+        type: string
+      nexus-url:
+        description: The URL of the reference Nexus repository
+        type: string
+      ref:
+        description: The branch, tag or SHA to checkout
+        default: ${{ github.ref }}
+        type: string
+      runner:
+        description: The type of runner to use
+        default: ubuntu-latest
+        type: string
+
+env:
+  MAVEN_ARGS: ${{ inputs.maven-args }}
+
+jobs:
+
+  build:
+
+    runs-on: ${{ inputs.runner }}
+
+    steps:
+
+      - name: Checkout repository
+        uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871   # 
4.2.1
+        with:
+          ref: ${{ inputs.ref }}
+
+      - name: Set up Java
+        uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73   # 
4.4.0
+        with:
+          distribution: zulu
+          java-version: ${{ inputs.java-version }}
+          cache: maven
+
+      # `clean verify artifact:compare` is required to generate the build 
reproducibility report.
+      # For details, see: 
https://maven.apache.org/guides/mini/guide-reproducible-builds.html#how-to-test-my-maven-build-reproducibility
+      - name: Verify build reproducibility
+        shell: bash
+        run: |
+          ./mvnw \
+            --show-version --batch-mode --errors --no-transfer-progress \
+            -DskipTests=true \
+            -Dreference.repo=${{ inputs.nexus-url }} \
+            clean verify artifact:compare
+
+      # Upload reproducibility results if the build fails.
+      - name: Upload reproducibility results
+        if: failure()
+        uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 
  # 4.4.3
+        with:
+          name: 
reproducibility-${{matrix.os}}-${{github.run_number}}-${{github.run_attempt}}
+          path: |
+            **/target/bom.xml
+            **/target/*.buildcompare
+            **/target/*.jar
+            **/target/*.zip
+            **/target/reference/**
diff --git a/src/changelog/.11.x.x/verify_reproducibility_reusable.xml 
b/src/changelog/.11.x.x/verify_reproducibility_reusable.xml
new file mode 100644
index 0000000..e978f63
--- /dev/null
+++ b/src/changelog/.11.x.x/verify_reproducibility_reusable.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xmlns="https://logging.apache.org/xml/ns";
+       xsi:schemaLocation="https://logging.apache.org/xml/ns 
https://logging.apache.org/xml/ns/log4j-changelog-0.xsd";
+       type="changed">
+  <issue id="246" link="https://github.com/apache/logging-parent/pull/246"/>
+  <description format="asciidoc">
+    Adds a `verify_reproducibility-reusable.yaml` workflow to check 
reproducibility of artifacts in a Maven repo.
+    Deprecates the reproducibility check in `build-reusable.yaml`.
+  </description>
+</entry>
diff --git a/src/site/antora/modules/ROOT/pages/features.adoc 
b/src/site/antora/modules/ROOT/pages/features.adoc
index 0d19572..f421823 100644
--- a/src/site/antora/modules/ROOT/pages/features.adoc
+++ b/src/site/antora/modules/ROOT/pages/features.adoc
@@ -53,7 +53,6 @@ The provided reusable GitHub Actions workflows feature the 
following convenience
 
 
{project-github-url}/blob/main/.github/workflows/build-reusable.yaml[`build-reusable.yaml`]::
 * Compiles using the specified Java compiler version
-* Verifies reproducibility
 * Submits build scans to the Develocity server
 
 
{project-github-url}/blob/main/.github/workflows/deploy-release-reusable.yaml[`deploy-release-reusable.yaml`]::
@@ -72,6 +71,9 @@ The provided reusable GitHub Actions workflows feature the 
following convenience
 
{project-github-url}/blob/main/.github/workflows/merge-dependabot-reusable.yaml[`merge-dependabot-reusable.yaml`]::
 * Merges `dependabot` PRs along with changelog entries
 
+{project-github-url}/blob/main/.github/workflows/merge-dependabot-reusable.yaml[`verify-reproducibility-reusable.yaml`]::
+* Verifies reproducibility of a previous deployment workflow.
+
 [#release-instructions]
 === Release instructions
 

Reply via email to