From 55a3fdf3c45fe7b36b298c5d15d3fe64e2f43059 Mon Sep 17 00:00:00 2001 From: sharvath Date: Tue, 28 Jul 2026 13:57:31 -0700 Subject: [PATCH 1/4] Add support for Java 25 --- .github/workflows/publish-java.yml | 86 ++++++++++++++++++++++++++---- Makefile | 26 +++++++++ dockerfiles/Dockerfile.java25 | 32 +++++++++++ java/build.gradle | 3 ++ java/publish-layers.sh | 63 +++++++++++++++++++++- 5 files changed, 199 insertions(+), 11 deletions(-) create mode 100644 dockerfiles/Dockerfile.java25 diff --git a/.github/workflows/publish-java.yml b/.github/workflows/publish-java.yml index 2747e593..3705c4e7 100644 --- a/.github/workflows/publish-java.yml +++ b/.github/workflows/publish-java.yml @@ -47,6 +47,41 @@ jobs: cd java DIST_DIR=../dist/java21 ./publish-layers.sh publish-staging-java21 + # ── Job 1b: Build + publish staging (java25 only) ───────────────────────── + stage-java25: + runs-on: ubuntu-latest + outputs: + tag-match: ${{ steps.java-check-tag.outputs.match }} + arn_x86: ${{ steps.staging.outputs.arn_x86 }} + arn_arm64: ${{ steps.staging.outputs.arn_arm64 }} + steps: + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4 + - name: Use Java 25 + uses: actions/setup-java@v4 + with: + distribution: 'corretto' + java-version: '25' + - name: Check Tag + id: java-check-tag + run: | + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]] || \ + [[ "${{ github.event.ref }}" =~ ^refs/tags/v[0-9]+(\.[0-9]+)*_java$ ]]; then + echo "match=true" >> $GITHUB_OUTPUT + fi + - name: Build layer artifacts (java25) + if: steps.java-check-tag.outputs.match == 'true' + run: make extract-java25-artifacts + - name: Publish staging layers (java25) + if: steps.java-check-tag.outputs.match == 'true' + id: staging + env: + AWS_ACCESS_KEY_ID: ${{ secrets.STAGING_AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.STAGING_AWS_SECRET_ACCESS_KEY }} + STAGING_REGION: us-east-1 + run: | + cd java + DIST_DIR=../dist/java25 ./publish-layers.sh publish-staging-java25 + # ── Job 2: Validate (calls reusable workflow) ───────────────────────────── validate-java: needs: stage-java @@ -58,6 +93,17 @@ jobs: arn_arm64: ${{ needs.stage-java.outputs.arn_arm64 }} secrets: inherit + # ── Job 2b: Validate java25 (calls reusable workflow) ────────────────────── + validate-java25: + needs: stage-java25 + if: needs.stage-java25.outputs.tag-match == 'true' + uses: ./.github/workflows/validate-layer.yml + with: + runtime: java25 + arn_x86: ${{ needs.stage-java25.outputs.arn_x86 }} + arn_arm64: ${{ needs.stage-java25.outputs.arn_arm64 }} + secrets: inherit + # ── Job 3: Cleanup staging (always) ────────────────────────────────────── cleanup-java: needs: [stage-java, validate-java] @@ -76,15 +122,33 @@ jobs: cd java ./publish-layers.sh cleanup-staging-java21 + # ── Job 3b: Cleanup java25 staging (always) ──────────────────────────────── + cleanup-java25: + needs: [stage-java25, validate-java25] + if: always() && needs.stage-java25.outputs.arn_x86 != '' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Cleanup staging layers + env: + AWS_ACCESS_KEY_ID: ${{ secrets.STAGING_AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.STAGING_AWS_SECRET_ACCESS_KEY }} + STAGING_REGION: us-east-1 + ARN_X86: ${{ needs.stage-java25.outputs.arn_x86 }} + ARN_ARM64: ${{ needs.stage-java25.outputs.arn_arm64 }} + run: | + cd java + ./publish-layers.sh cleanup-staging-java25 + # ── Job 4: Release all Java versions — gated on validate passing ────────── publish-java: - needs: [stage-java, validate-java] + needs: [stage-java, validate-java, stage-java25, validate-java25] if: needs.stage-java.outputs.tag-match == 'true' runs-on: ubuntu-latest strategy: fail-fast: false matrix: - java-version: [java8al2, java11, java17, java21] + java-version: [java8al2, java11, java17, java21, java25] outputs: failure_summary: ${{ steps.publish.outputs.failure_summary }} ecr_failure_summary: ${{ steps.publish-ecr.outputs.ecr_failure_summary }} @@ -98,6 +162,7 @@ jobs: ["java11"]="11" ["java17"]="17" ["java21"]="21" + ["java25"]="25" ) java_numeric_version=${map_java_version[${{ matrix.java-version }}]} echo "JAVA_NUMERIC_VERSION=$java_numeric_version" >> $GITHUB_ENV @@ -106,9 +171,9 @@ jobs: with: distribution: 'corretto' java-version: ${{ env.JAVA_NUMERIC_VERSION }} - - name: Build layer artifacts (java21 only) - if: matrix.java-version == 'java21' - run: make extract-java21-artifacts + - name: Build layer artifacts (java21/java25 only) + if: matrix.java-version == 'java21' || matrix.java-version == 'java25' + run: make extract-${{ matrix.java-version }}-artifacts - name: Load failed regions for re-run id: region-retry-load uses: ./.github/actions/region-retry @@ -126,7 +191,7 @@ jobs: LAYER_REGIONS: ${{ vars.LAYER_REGIONS }} S3_BUCKET_PREFIX: ${{ vars.S3_BUCKET_PREFIX }} run: | - if [[ "${{ matrix.java-version }}" == "java21" ]]; then + if [[ "${{ matrix.java-version }}" == "java21" || "${{ matrix.java-version }}" == "java25" ]]; then failed_file="$(mktemp)" chmod a+rw "$failed_file" "$GITHUB_STEP_SUMMARY" set +e @@ -139,7 +204,7 @@ jobs: -e "FAILED_REGIONS_FILE=${failed_file}" \ -v "$GITHUB_STEP_SUMMARY:$GITHUB_STEP_SUMMARY" \ -v "${failed_file}:${failed_file}" \ - newrelic-lambda-layers-java21 + newrelic-lambda-layers-${{ matrix.java-version }} docker_exit=$? set -e [[ -s "${failed_file}" ]] && cat "${failed_file}" >> "$GITHUB_OUTPUT" || true @@ -175,8 +240,8 @@ jobs: # ── Job 5: Slack release summary — only after validate passed ───────────── notify-slack: - needs: [stage-java, validate-java, publish-java] - if: always() && needs.validate-java.result == 'success' && needs.stage-java.outputs.tag-match == 'true' + needs: [stage-java, validate-java, stage-java25, validate-java25, publish-java] + if: always() && needs.validate-java.result == 'success' && needs.validate-java25.result == 'success' && needs.stage-java.outputs.tag-match == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -188,7 +253,8 @@ jobs: {"key":"java8al2","label":"Java 8 (AL2)","job":"publish-java (java8al2)","fallback":"${{ needs.publish-java.result }}","failure_key":"java-java8al2"}, {"key":"java11","label":"Java 11","job":"publish-java (java11)","fallback":"${{ needs.publish-java.result }}","failure_key":"java-java11"}, {"key":"java17","label":"Java 17","job":"publish-java (java17)","fallback":"${{ needs.publish-java.result }}","failure_key":"java-java17"}, - {"key":"java21","label":"Java 21","job":"publish-java (java21)","fallback":"${{ needs.publish-java.result }}","failure_key":"java-java21"} + {"key":"java21","label":"Java 21","job":"publish-java (java21)","fallback":"${{ needs.publish-java.result }}","failure_key":"java-java21"}, + {"key":"java25","label":"Java 25","job":"publish-java (java25)","fallback":"${{ needs.publish-java.result }}","failure_key":"java-java25"} ] failure_summaries: ${{ needs.publish-java.outputs.ecr_failure_summary }} slack_webhook: ${{ secrets.SLACK_VALIDATION_WEBHOOK }} diff --git a/Makefile b/Makefile index 5bca9c6c..ccd07eb3 100644 --- a/Makefile +++ b/Makefile @@ -81,6 +81,32 @@ extract-java21-artifacts: build-java21 docker cp java21-artifacts:/home/newrelic-lambda-layers/java/dist/. dist/java21/ docker rm java21-artifacts +build-java25: + docker build \ + --no-cache \ + -t newrelic-lambda-layers-java25 \ + -f ./dockerfiles/Dockerfile.java25 \ + . + +publish-java25-ci: build-java25 + docker run \ + -e AWS_ACCESS_KEY_ID \ + -e AWS_SECRET_ACCESS_KEY \ + newrelic-lambda-layers-java25 + +publish-java25-local: build-java25 + docker run \ + -e AWS_PROFILE \ + -v "${HOME}/.aws:/home/newrelic-lambda-layers/.aws" \ + newrelic-lambda-layers-java25 + +extract-java25-artifacts: build-java25 + @docker rm -f java25-artifacts 2>/dev/null || true + mkdir -p dist/java25 + docker create --name java25-artifacts newrelic-lambda-layers-java25 + docker cp java25-artifacts:/home/newrelic-lambda-layers/java/dist/. dist/java25/ + docker rm java25-artifacts + build-nodejs22: docker build \ --no-cache \ diff --git a/dockerfiles/Dockerfile.java25 b/dockerfiles/Dockerfile.java25 new file mode 100644 index 00000000..fa4deedf --- /dev/null +++ b/dockerfiles/Dockerfile.java25 @@ -0,0 +1,32 @@ +FROM eclipse-temurin:25 AS builder + +RUN apt-get update \ + && apt-get install -y curl unzip zip + +RUN useradd -m newrelic-lambda-layers +USER newrelic-lambda-layers +WORKDIR /home/newrelic-lambda-layers + +COPY --chown=newrelic-lambda-layers libBuild.sh . +COPY --chown=newrelic-lambda-layers java java/ + +WORKDIR java +# Gradle running on JDK 25 requires Gradle >= 9.1.0, but the repo's shared +# wrapper (8.6) targets older JDKs used by the other java* layers. +RUN sed -i 's#distributionUrl=.*#distributionUrl=https\\://services.gradle.org/distributions/gradle-9.1.0-bin.zip#' gradle/wrapper/gradle-wrapper.properties +RUN ./publish-layers.sh build-java25 + +FROM python:3.12 + +RUN useradd -m newrelic-lambda-layers +USER newrelic-lambda-layers +WORKDIR /home/newrelic-lambda-layers +RUN pip3 install -U awscli --user +ENV PATH /home/newrelic-lambda-layers/.local/bin/:$PATH + +COPY libBuild.sh . +COPY java java/ +COPY --from=builder /home/newrelic-lambda-layers/java/dist java/dist + +WORKDIR java +CMD ./publish-layers.sh publish-java25 diff --git a/java/build.gradle b/java/build.gradle index 65fe7cbf..88db28c3 100644 --- a/java/build.gradle +++ b/java/build.gradle @@ -56,6 +56,9 @@ if (hasProperty('javaVersion')) { case "21": ext.javaVersion = JavaVersion.VERSION_21 break + case "25": + ext.javaVersion = JavaVersion.VERSION_25 + break default: logger.lifecycle("Unrecognized javaVersion. Using 8.") ext.javaVersion = JavaVersion.VERSION_1_8 diff --git a/java/publish-layers.sh b/java/publish-layers.sh index e0b2545e..d35589fa 100755 --- a/java/publish-layers.sh +++ b/java/publish-layers.sh @@ -14,11 +14,13 @@ JAVA17_DIST_ARM64=$DIST_DIR/java17.arm64.zip JAVA17_DIST_X86_64=$DIST_DIR/java17.x86_64.zip JAVA21_DIST_ARM64=$DIST_DIR/java21.arm64.zip JAVA21_DIST_X86_64=$DIST_DIR/java21.x86_64.zip +JAVA25_DIST_ARM64=$DIST_DIR/java25.arm64.zip +JAVA25_DIST_X86_64=$DIST_DIR/java25.x86_64.zip source ../libBuild.sh function usage { - echo "./publish-layers.sh [java8al2, java11, java17, java21]" + echo "./publish-layers.sh [java8al2, java11, java17, java21, java25]" } function build-arm() { @@ -155,6 +157,32 @@ function publish-java21-x86 { run_region_loop "$JAVA21_DIST_X86_64" java21 x86_64 } +function build-java25-arm64 { + build-arm "java25 (arm64)" 25 $JAVA25_DIST_ARM64 +} + +function build-java25-x86 { + build-x86 "java25 (x86_64)" 25 $JAVA25_DIST_X86_64 +} + +function publish-java25-arm64 { + if [ ! -f $JAVA25_DIST_ARM64 ]; then + echo "Package not found" + exit 1 + fi + + run_region_loop "$JAVA25_DIST_ARM64" java25 arm64 +} + +function publish-java25-x86 { + if [ ! -f $JAVA25_DIST_X86_64 ]; then + echo "Package not found" + exit 1 + fi + + run_region_loop "$JAVA25_DIST_X86_64" java25 x86_64 +} + case "$1" in "build-java8al2") build-java8al2-arm64 @@ -188,6 +216,14 @@ case "$1" in publish-java21-arm64 publish-java21-x86 ;; +"build-java25") + build-java25-arm64 + build-java25-x86 + ;; +"publish-java25") + publish-java25-arm64 + publish-java25-x86 + ;; "build-publish-java8al2-ecr-image") build-java8al2-arm64 publish_ecr_safe $JAVA8_DIST_ARM64 java8 arm64 @@ -216,6 +252,13 @@ case "$1" in publish_ecr_safe $JAVA21_DIST_X86_64 java21 x86_64 finalize_ecr_results "java21" ;; +"build-publish-java25-ecr-image") + build-java25-arm64 + publish_ecr_safe $JAVA25_DIST_ARM64 java25 arm64 + build-java25-x86 + publish_ecr_safe $JAVA25_DIST_X86_64 java25 x86_64 + finalize_ecr_results "java25" + ;; "java8al2") $0 build-java8al2 $0 publish-java8al2 @@ -232,6 +275,10 @@ case "$1" in $0 build-java21 $0 publish-java21 ;; +"java25") + $0 build-java25 + $0 publish-java25 + ;; "publish-staging-java21") build-java21-arm64 build-java21-x86 @@ -246,6 +293,20 @@ case "$1" in delete_staging_layer "$(echo "$arn" | cut -d: -f8)" "$(echo "$arn" | cut -d: -f9)" done ;; +"publish-staging-java25") + build-java25-arm64 + build-java25-x86 + arn_arm64=$(publish_staging_layer "$JAVA25_DIST_ARM64" java25 arm64) + echo "arn_arm64=${arn_arm64}" >> "${GITHUB_OUTPUT:-/dev/stderr}" + arn_x86=$(publish_staging_layer "$JAVA25_DIST_X86_64" java25 x86_64) + echo "arn_x86=${arn_x86}" >> "${GITHUB_OUTPUT:-/dev/stderr}" + ;; +"cleanup-staging-java25") + for arn in "${ARN_X86:-}" "${ARN_ARM64:-}"; do + [[ -z "$arn" ]] && continue + delete_staging_layer "$(echo "$arn" | cut -d: -f8)" "$(echo "$arn" | cut -d: -f9)" + done + ;; *) usage ;; From 29acfc6f1a4fea01b064ea8f8b5aa8ec111a160f Mon Sep 17 00:00:00 2001 From: sharvath Date: Tue, 28 Jul 2026 14:26:28 -0700 Subject: [PATCH 2/4] Cleanup/refactor --- .github/workflows/publish-java.yml | 80 +++--------------------------- Makefile | 7 --- 2 files changed, 8 insertions(+), 79 deletions(-) diff --git a/.github/workflows/publish-java.yml b/.github/workflows/publish-java.yml index 3705c4e7..7864f1b0 100644 --- a/.github/workflows/publish-java.yml +++ b/.github/workflows/publish-java.yml @@ -12,43 +12,8 @@ on: default: '' jobs: - # ── Job 1: Build + publish staging (java21 only) ────────────────────────── + # ── Job 1: Build + publish staging (java25 only) ────────────────────────── stage-java: - runs-on: ubuntu-latest - outputs: - tag-match: ${{ steps.java-check-tag.outputs.match }} - arn_x86: ${{ steps.staging.outputs.arn_x86 }} - arn_arm64: ${{ steps.staging.outputs.arn_arm64 }} - steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4 - - name: Use Java 21 - uses: actions/setup-java@v4 - with: - distribution: 'corretto' - java-version: '21' - - name: Check Tag - id: java-check-tag - run: | - if [[ "${{ github.event_name }}" == "workflow_dispatch" ]] || \ - [[ "${{ github.event.ref }}" =~ ^refs/tags/v[0-9]+(\.[0-9]+)*_java$ ]]; then - echo "match=true" >> $GITHUB_OUTPUT - fi - - name: Build layer artifacts (java21) - if: steps.java-check-tag.outputs.match == 'true' - run: make extract-java21-artifacts - - name: Publish staging layers (java21) - if: steps.java-check-tag.outputs.match == 'true' - id: staging - env: - AWS_ACCESS_KEY_ID: ${{ secrets.STAGING_AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.STAGING_AWS_SECRET_ACCESS_KEY }} - STAGING_REGION: us-east-1 - run: | - cd java - DIST_DIR=../dist/java21 ./publish-layers.sh publish-staging-java21 - - # ── Job 1b: Build + publish staging (java25 only) ───────────────────────── - stage-java25: runs-on: ubuntu-latest outputs: tag-match: ${{ steps.java-check-tag.outputs.match }} @@ -88,22 +53,11 @@ jobs: if: needs.stage-java.outputs.tag-match == 'true' uses: ./.github/workflows/validate-layer.yml with: - runtime: java21 + runtime: java25 arn_x86: ${{ needs.stage-java.outputs.arn_x86 }} arn_arm64: ${{ needs.stage-java.outputs.arn_arm64 }} secrets: inherit - # ── Job 2b: Validate java25 (calls reusable workflow) ────────────────────── - validate-java25: - needs: stage-java25 - if: needs.stage-java25.outputs.tag-match == 'true' - uses: ./.github/workflows/validate-layer.yml - with: - runtime: java25 - arn_x86: ${{ needs.stage-java25.outputs.arn_x86 }} - arn_arm64: ${{ needs.stage-java25.outputs.arn_arm64 }} - secrets: inherit - # ── Job 3: Cleanup staging (always) ────────────────────────────────────── cleanup-java: needs: [stage-java, validate-java] @@ -118,31 +72,13 @@ jobs: STAGING_REGION: us-east-1 ARN_X86: ${{ needs.stage-java.outputs.arn_x86 }} ARN_ARM64: ${{ needs.stage-java.outputs.arn_arm64 }} - run: | - cd java - ./publish-layers.sh cleanup-staging-java21 - - # ── Job 3b: Cleanup java25 staging (always) ──────────────────────────────── - cleanup-java25: - needs: [stage-java25, validate-java25] - if: always() && needs.stage-java25.outputs.arn_x86 != '' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Cleanup staging layers - env: - AWS_ACCESS_KEY_ID: ${{ secrets.STAGING_AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.STAGING_AWS_SECRET_ACCESS_KEY }} - STAGING_REGION: us-east-1 - ARN_X86: ${{ needs.stage-java25.outputs.arn_x86 }} - ARN_ARM64: ${{ needs.stage-java25.outputs.arn_arm64 }} run: | cd java ./publish-layers.sh cleanup-staging-java25 # ── Job 4: Release all Java versions — gated on validate passing ────────── publish-java: - needs: [stage-java, validate-java, stage-java25, validate-java25] + needs: [stage-java, validate-java] if: needs.stage-java.outputs.tag-match == 'true' runs-on: ubuntu-latest strategy: @@ -171,8 +107,8 @@ jobs: with: distribution: 'corretto' java-version: ${{ env.JAVA_NUMERIC_VERSION }} - - name: Build layer artifacts (java21/java25 only) - if: matrix.java-version == 'java21' || matrix.java-version == 'java25' + - name: Build layer artifacts (java25 only) + if: matrix.java-version == 'java25' run: make extract-${{ matrix.java-version }}-artifacts - name: Load failed regions for re-run id: region-retry-load @@ -191,7 +127,7 @@ jobs: LAYER_REGIONS: ${{ vars.LAYER_REGIONS }} S3_BUCKET_PREFIX: ${{ vars.S3_BUCKET_PREFIX }} run: | - if [[ "${{ matrix.java-version }}" == "java21" || "${{ matrix.java-version }}" == "java25" ]]; then + if [[ "${{ matrix.java-version }}" == "java25" ]]; then failed_file="$(mktemp)" chmod a+rw "$failed_file" "$GITHUB_STEP_SUMMARY" set +e @@ -240,8 +176,8 @@ jobs: # ── Job 5: Slack release summary — only after validate passed ───────────── notify-slack: - needs: [stage-java, validate-java, stage-java25, validate-java25, publish-java] - if: always() && needs.validate-java.result == 'success' && needs.validate-java25.result == 'success' && needs.stage-java.outputs.tag-match == 'true' + needs: [stage-java, validate-java, publish-java] + if: always() && needs.validate-java.result == 'success' && needs.stage-java.outputs.tag-match == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/Makefile b/Makefile index ccd07eb3..ba400018 100644 --- a/Makefile +++ b/Makefile @@ -74,13 +74,6 @@ publish-java21-local: build-java21 -v "${HOME}/.aws:/home/newrelic-lambda-layers/.aws" \ newrelic-lambda-layers-java21 -extract-java21-artifacts: build-java21 - @docker rm -f java21-artifacts 2>/dev/null || true - mkdir -p dist/java21 - docker create --name java21-artifacts newrelic-lambda-layers-java21 - docker cp java21-artifacts:/home/newrelic-lambda-layers/java/dist/. dist/java21/ - docker rm java21-artifacts - build-java25: docker build \ --no-cache \ From fed96b3e866452743f392debac06735bf665fc8a Mon Sep 17 00:00:00 2001 From: sharvath Date: Tue, 28 Jul 2026 14:38:40 -0700 Subject: [PATCH 3/4] Small verbiage change --- dockerfiles/Dockerfile.java25 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockerfiles/Dockerfile.java25 b/dockerfiles/Dockerfile.java25 index fa4deedf..7984653f 100644 --- a/dockerfiles/Dockerfile.java25 +++ b/dockerfiles/Dockerfile.java25 @@ -12,7 +12,7 @@ COPY --chown=newrelic-lambda-layers java java/ WORKDIR java # Gradle running on JDK 25 requires Gradle >= 9.1.0, but the repo's shared -# wrapper (8.6) targets older JDKs used by the other java* layers. +# wrapper (8.6) targets older JDKs used by the other Java layers. RUN sed -i 's#distributionUrl=.*#distributionUrl=https\\://services.gradle.org/distributions/gradle-9.1.0-bin.zip#' gradle/wrapper/gradle-wrapper.properties RUN ./publish-layers.sh build-java25 From de7c1d5225f4df0b20293856f826d86495024f0a Mon Sep 17 00:00:00 2001 From: sharvath Date: Tue, 4 Aug 2026 14:18:34 -0700 Subject: [PATCH 4/4] Fix broken staging step --- java/publish-layers.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/java/publish-layers.sh b/java/publish-layers.sh index d35589fa..a38814a5 100755 --- a/java/publish-layers.sh +++ b/java/publish-layers.sh @@ -294,8 +294,10 @@ case "$1" in done ;; "publish-staging-java25") - build-java25-arm64 - build-java25-x86 + if [ ! -f "$JAVA25_DIST_ARM64" ] || [ ! -f "$JAVA25_DIST_X86_64" ]; then + echo "Package not found" + exit 1 + fi arn_arm64=$(publish_staging_layer "$JAVA25_DIST_ARM64" java25 arm64) echo "arn_arm64=${arn_arm64}" >> "${GITHUB_OUTPUT:-/dev/stderr}" arn_x86=$(publish_staging_layer "$JAVA25_DIST_X86_64" java25 x86_64)