You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tooling.apache.org by ar...@apache.org on 2026/03/10 17:18:15 UTC

(tooling-actions) branch main updated (0373712 -> 9c213fb)

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

arm pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/tooling-actions.git


 discard 0373712  Update maven central distribution for ntb files
     new 9c213fb  Fix name of workflow

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (0373712)
            \
             N -- N -- N   refs/heads/main (9c213fb)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .github/workflows/distribute-maven.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@tooling.apache.org
For additional commands, e-mail: commits-help@tooling.apache.org


(tooling-actions) 01/01: Fix name of workflow

Posted by ar...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

arm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tooling-actions.git

commit 9c213fbcd683f84753a3a290c852dcee017e915e
Author: Alastair McFarlane <ar...@apache.org>
AuthorDate: Tue Mar 10 14:03:26 2026 +0000

    Fix name of workflow
---
 .github/workflows/distribute-maven.yml | 300 +++++++++++++++++++++++++++++++++
 1 file changed, 300 insertions(+)

diff --git a/.github/workflows/distribute-maven.yml b/.github/workflows/distribute-maven.yml
new file mode 100644
index 0000000..e425a9c
--- /dev/null
+++ b/.github/workflows/distribute-maven.yml
@@ -0,0 +1,300 @@
+# 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: Distribute from ATR to RAO Maven Staging
+run-name: "${{ inputs.atr-id }}"
+
+on:
+  workflow_dispatch:
+    inputs:
+      atr-id:
+        description: 'Run ID (from ATR)'
+        required: true
+      asf-uid:
+        description: 'Originating user ID'
+        required: true
+      project:
+        description: 'Project in ATR to pull files from'
+        required: true
+      version:
+        description: 'Version in ATR to pull files from'
+        required: true
+      phase:
+        description: 'Expected release phase in ATR'
+        required: true
+      distribution-owner-namespace:
+        description: "Owner namespace"
+        required: true
+      distribution-package:
+        description: 'Package/project name in ATR'
+        required: true
+      distribution-version:
+        description: 'Distribution version'
+        required: true
+      atr-host:
+        description: 'ATR host (for testing purposes)'
+        required: false
+        default: 'release-test.apache.org'
+      ssh-port:
+        description: 'SSH port for ATR (for testing purposes)'
+        required: false
+        default: '2222'
+
+jobs:
+  distribute:
+    permissions:
+      id-token: write
+      contents: read
+    runs-on: ubuntu-latest
+    env:
+      ATR_HOST: ${{ inputs.atr-host }}
+      SSH_PORT: ${{ inputs.ssh-port }}
+      WORKFLOW: distribute-maven.yml
+      NJORD_STORE: atr-deployment-${{ inputs.distribution-package }}-${{ inputs.distribution-version }}
+      RAO_USERNAME: ${{ secrets.RAO_USERNAME }}
+      RAO_PASSWORD: ${{ secrets.RAO_PASSWORD }}
+      TAG_NAME: "${{ inputs.distribution-owner-namespace }}-${{ inputs.distribution-package }}-${{ inputs.distribution-version }}"
+    steps:
+      - name: Sleep for 5 seconds
+        run: sleep 5s
+        shell: bash
+      - name: Create settings.xml
+        run: |
+            mkdir -p ~/.m2
+            cat > ~/.m2/settings.xml << EOF
+            <?xml version="1.0" encoding="UTF-8"?>
+            <settings>
+              <pluginGroups>
+                <pluginGroup>eu.maveniverse.maven.plugins</pluginGroup>
+              </pluginGroups>
+              <servers>
+                <server>
+                  <id>rao3</id>
+                  <username>${RAO_USERNAME}</username>
+                  <password>${RAO_PASSWORD}</password>
+                  <configuration>
+                    <njord.publisher>sonatype-nx3</njord.publisher>
+                    <njord.publisher.sonatype-nx3.baseUrl>https://repository.apache.org:4443/</njord.publisher.sonatype-nx3.baseUrl>
+                  </configuration>
+                </server>
+              </servers>
+            </settings>
+            EOF
+
+      - name: Set up JDK 17
+        uses: actions/setup-java@f2beeb24e141e01a676f977032f5a29d81c9e27e
+        with:
+          java-version: '17'
+          distribution: 'temurin'
+          overwrite-settings: false
+      - name: Set up Maven 3.9+
+        uses: stCarolas/setup-maven@d6af6abeda15e98926a57b5aa970a96bb37f97d1
+        with:
+          maven-version: 3.9.12
+
+      - name: Create a GitHub OIDC JWT
+        id: create-github-jwt
+        shell: bash
+        run: |
+          set -euo pipefail
+          url="${ACTIONS_ID_TOKEN_REQUEST_URL}&audience=atr-test-v1"
+          jwt="$(curl -sS --fail-with-body -H "Authorization: bearer ${ACTIONS_ID_TOKEN_REQUEST_TOKEN}" "$url" | jq -r .value)"
+          echo "::add-mask::$jwt"
+          echo "jwt=$jwt" >> "$GITHUB_OUTPUT"
+
+      - name: Generate an ephemeral SSH key
+        id: generate-ssh-key
+        shell: bash
+        run: |
+          set -euxo pipefail
+          ssh-keygen -t ed25519 -N "" -f "$RUNNER_TEMP/ssh_key"
+          echo "ssh_private_key_path=$RUNNER_TEMP/ssh_key" >> "$GITHUB_OUTPUT"
+          echo "ssh_public_key=$(cat "$RUNNER_TEMP/ssh_key.pub")" >> "$GITHUB_OUTPUT"
+
+      - name: Register the ephemeral SSH key with ATR
+        shell: bash
+        run: |
+          set -euxo pipefail
+          case "${ATR_HOST}" in
+            *.apache.org) ;;
+            *) echo "atr-host must match *.apache.org"; exit 1;;
+          esac
+          jq -n --arg publisher github \
+                --arg jwt "$JWT" \
+                --arg key "$SSH_PUBLIC_KEY" \
+                --arg uid "$INPUTS_ASF_UID" \
+                --arg phase "$INPUTS_PHASE" \
+                --arg project_name "$INPUTS_PROJECT" \
+                --arg version "$INPUTS_VERSION" \
+                '{publisher:$publisher, jwt:$jwt, ssh_key:$key, asf_uid:$uid, project_name:$project_name, phase:$phase, version:$version}' |
+            curl -sS --fail-with-body -X POST -H 'Content-Type: application/json' -d @- \
+              "https://${ATR_HOST}/api/distribute/ssh/register"
+        env:
+          JWT: ${{ steps.create-github-jwt.outputs.jwt }}
+          SSH_PUBLIC_KEY: ${{ steps.generate-ssh-key.outputs.ssh_public_key }}
+          INPUTS_PROJECT: ${{ inputs.project }}
+          INPUTS_VERSION: ${{ inputs.version }}
+          INPUTS_PHASE: ${{ inputs.phase }}
+          INPUTS_ASF_UID: ${{ inputs.asf-uid }}
+
+      - name: Report status back to ATR
+        shell: bash
+        run: |
+          set -euxo pipefail
+          jq -n --arg publisher github \
+                --arg jwt "$JWT" \
+                --arg workflow "$WORKFLOW" \
+                --arg run_id $RUN_ID \
+                --arg project_name "$INPUTS_PROJECT" \
+                '{publisher:$publisher, jwt:$jwt, workflow:$workflow, run_id:$run_id, project_name:$project_name, status:"in_progress", message:"Compiling distribution"}' |
+            curl -sS --fail-with-body -X POST -H 'Content-Type: application/json' -d @- \
+              "https://${ATR_HOST}/api/distribute/task/status"
+        env:
+          JWT: ${{ steps.create-github-jwt.outputs.jwt }}
+          RUN_ID: ${{ github.run_id }}
+          INPUTS_PROJECT: ${{ inputs.project }}
+
+      - name: Download from ATR using rsync
+        shell: bash
+        run: |
+          set -euxo pipefail
+          if ! [[ "${SSH_PORT}" =~ ^[0-9]+$ ]]
+          then
+            echo "::error::ssh-port must be an integer"
+            exit 1
+          fi
+          : "${INPUTS_DISTRIBUTION_PACKAGE:?package is required}"
+          : "${INPUTS_VERSION:?version is required}"
+          command -v rsync > /dev/null || { sudo apt-get update -y && sudo apt-get install -y rsync; }
+          mkdir stg
+          rsync -av \
+            -e "ssh -p 2222 -i $SSH_PRIVATE_KEY_PATH -o StrictHostKeyChecking=accept-new" \
+            -- \
+            "github@${ATR_HOST}:/${INPUTS_PROJECT}/${INPUTS_VERSION}/maven/" ./stg/
+        env:
+          INPUTS_PROJECT: ${{ inputs.project }}
+          INPUTS_VERSION: ${{ inputs.version }}
+          INPUTS_DISTRIBUTION_OWNER_NAMESPACE: ${{ inputs.distribution-owner-namespace }}
+          INPUTS_DISTRIBUTION_PACKAGE: ${{ inputs.distribution-package }}
+          # INPUTS_DETAILS: ${{ inputs.details }}
+          SSH_PRIVATE_KEY_PATH: ${{ steps.generate-ssh-key.outputs.ssh_private_key_path }}
+
+      - name: Get store ID and publish
+        shell: bash
+        run: |
+          set -euxo pipefail
+          echo "Importing Njord bundle"
+          NJORD_STORE=$(mvn njord:import-all -Dnjord.dir=./stg | sed -En 's/.*Imported to (.+) staged.*/\1/p')
+          echo "Validating store: $NJORD_STORE"
+          mvn njord:validate -Dnjord.store=$NJORD_STORE -Dnjord.publisher=sonatype-cp -Dnjord.details=true -q | sed -n '/Central Requirements/,/ArtifactStore.*failed validation/{/ArtifactStore.*failed validation/!s/^\[ERROR\] *//p}' | tee .err
+          echo "Publishing store: $NJORD_STORE"
+          mvn njord:publish -Dnjord.store=$NJORD_STORE
+          mvn njord:drop -Dnjord.store=$NJORD_STORE
+        env:
+          INPUTS_DISTRIBUTION_OWNER_NAMESPACE: ${{ inputs.distribution-owner-namespace }}
+          INPUTS_DISTRIBUTION_PACKAGE: ${{ inputs.distribution-package }}
+          INPUTS_DISTRIBUTION_VERSION: ${{ inputs.distribution-version }}
+
+      - name: Report status back to ATR
+        shell: bash
+        run: |
+          set -euxo pipefail
+          jq -n --arg publisher github \
+                --arg jwt "$JWT" \
+                --arg workflow "$WORKFLOW" \
+                --arg run_id $RUN_ID \
+                --arg project_name "$INPUTS_PROJECT" \
+                '{publisher:$publisher, jwt:$jwt, workflow:$workflow, run_id:$run_id, project_name:$project_name, status:"in_progress", message:"Recording distribution"}' |
+            curl -sS --fail-with-body -X POST -H 'Content-Type: application/json' -d @- \
+              "https://${ATR_HOST}/api/distribute/task/status"
+        env:
+          JWT: ${{ steps.create-github-jwt.outputs.jwt }}
+          RUN_ID: ${{ github.run_id }}
+          INPUTS_PROJECT: ${{ inputs.project }}
+
+      - name: Record distribution on ATR
+        shell: bash
+        run: |
+          set -euxo pipefail
+          DETAILS_JSON=false
+          [ "${INPUTS_DETAILS}" = "true" ] && DETAILS_JSON=true
+          jq -n --arg publisher github \
+                --arg jwt "$JWT" \
+                --arg uid "$INPUTS_ASF_UID" \
+                --arg project "$INPUTS_PROJECT" \
+                --arg version "$INPUTS_VERSION" \
+                --arg phase "$INPUTS_PHASE" \
+                --arg platform "MAVEN" \
+                --arg distribution_owner_namespace "$INPUTS_DISTRIBUTION_OWNER_NAMESPACE" \
+                --arg distribution_package "$INPUTS_DISTRIBUTION_PACKAGE" \
+                --arg distribution_version "$INPUTS_DISTRIBUTION_VERSION" \
+                --argjson details "$DETAILS_JSON" \
+                '{publisher:$publisher, jwt:$jwt, asf_uid:$uid, project:$project, version:$version, phase:$phase, platform:$platform, distribution_owner_namespace:$distribution_owner_namespace, distribution_package:$distribution_package, distribution_version:$distribution_version, staging:false, details:$details}' |
+            curl -sS --fail-with-body -X POST -H 'Content-Type: application/json' -d @- \
+              "https://${ATR_HOST}/api/distribute/record_from_workflow"
+        env:
+          INPUTS_PROJECT: ${{ inputs.project }}
+          INPUTS_VERSION: ${{ inputs.version }}
+          INPUTS_PHASE: ${{ inputs.phase }}
+          INPUTS_ASF_UID: ${{ inputs.asf-uid }}
+          INPUTS_DISTRIBUTION_OWNER_NAMESPACE: ${{ inputs.distribution-owner-namespace }}
+          INPUTS_DISTRIBUTION_PACKAGE: ${{ inputs.distribution-package }}
+          INPUTS_DISTRIBUTION_VERSION: ${{ inputs.distribution-version }}
+          INPUTS_DETAILS: "false"
+          JWT: ${{ steps.create-github-jwt.outputs.jwt }}
+
+      - name: Report status back to ATR
+        shell: bash
+        if: failure()
+        run: |
+          set -euxo pipefail
+          jq -n --arg publisher github \
+                --arg jwt "$JWT" \
+                --arg workflow "$WORKFLOW" \
+                --arg run_id $RUN_ID \
+                --arg project_name "$INPUTS_PROJECT" \
+                --arg err "$([ -f .err ] && [ -s .err ] && echo "Build failed: $(cat .err)" || echo "Github workflow failed")" \
+                --arg status "failed" \
+                '{publisher:$publisher, jwt:$jwt, workflow:$workflow, run_id:$run_id, project_name:$project_name, status:$status, message:$err}' |
+            curl -sS --fail-with-body -X POST -H 'Content-Type: application/json' -d @- \
+              "https://${ATR_HOST}/api/distribute/task/status"
+        env:
+          JWT: ${{ steps.create-github-jwt.outputs.jwt }}
+          RUN_ID: ${{ github.run_id }}
+          STATUS: ${{ job.status }}
+          INPUTS_PROJECT: ${{ inputs.project }}
+
+
+      - name: Report status back to ATR
+        shell: bash
+        if: success()
+        run: |
+          set -euxo pipefail
+          jq -n --arg publisher github \
+                --arg jwt "$JWT" \
+                --arg workflow "$WORKFLOW" \
+                --arg run_id $RUN_ID \
+                --arg project_name "$INPUTS_PROJECT" \
+                --arg status "success" \
+                '{publisher:$publisher, jwt:$jwt, workflow:$workflow, run_id:$run_id, project_name:$project_name, status:$status, message:"GitHub workflow succeeded"}' |
+            curl -sS --fail-with-body -X POST -H 'Content-Type: application/json' -d @- \
+              "https://${ATR_HOST}/api/distribute/task/status"
+        env:
+          JWT: ${{ steps.create-github-jwt.outputs.jwt }}
+          RUN_ID: ${{ github.run_id }}
+          STATUS: ${{ job.status }}
+          INPUTS_PROJECT: ${{ inputs.project }}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@tooling.apache.org
For additional commands, e-mail: commits-help@tooling.apache.org