From c62feefe74ad71d3d2f1204b15a240ed279e1609 Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Mon, 14 Sep 2026 14:52:27 +0200 Subject: [PATCH 1/4] [ci] Add runs on ARM and RISC-V --- .github/actions/job_init/action.yml | 12 ++++++++++-- .github/workflows/nightly.yml | 26 +++++++++++++++++++++++++ .github/workflows/template.flink-ci.yml | 13 +++++++++---- 3 files changed, 45 insertions(+), 6 deletions(-) diff --git a/.github/actions/job_init/action.yml b/.github/actions/job_init/action.yml index eb9bb427e45e14..e5c61510f7e7ec 100644 --- a/.github/actions/job_init/action.yml +++ b/.github/actions/job_init/action.yml @@ -88,8 +88,16 @@ runs: - name: "Set JDK version to ${{ inputs.jdk_version }}" shell: bash run: | - echo "JAVA_HOME=$JAVA_HOME_${{ inputs.jdk_version }}_X64" >> "${GITHUB_ENV}" - echo "PATH=$JAVA_HOME_${{ inputs.jdk_version }}_X64/bin:$PATH" >> "${GITHUB_ENV}" + suffix="" + if [[ $(uname -m) == "x86_64" ]]; then + suffix="_X64" + elif [[ $(uname -m) == "aarch64" ]]; then + suffix="_AARCH64" + elif [[ $(uname -m) == "riscv64" ]]; then + suffix="_RISCV64" + fi + echo "JAVA_HOME=$JAVA_HOME_${{ inputs.jdk_version }}${suffix}" >> "${GITHUB_ENV}" + echo "PATH=$JAVA_HOME_${{ inputs.jdk_version }}${suffix}/bin:$PATH" >> "${GITHUB_ENV}" - name: "Determine cache namespace (PR base | branch | tag)" id: cache-ns diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index b285112878d422..ac5c1e71b1fa78 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -39,6 +39,7 @@ jobs: workflow-caller-id: java11 environment: 'PROFILE="-Dinclude_hadoop_aws -Djdk11 -Pjava11-target"' jdk_version: 11 + os: ubuntu-24.04 secrets: s3_bucket: ${{ secrets.IT_CASE_S3_BUCKET }} s3_access_key: ${{ secrets.IT_CASE_S3_ACCESS_KEY }} @@ -50,6 +51,31 @@ jobs: workflow-caller-id: java21 environment: 'PROFILE="-Dinclude_hadoop_aws -Djdk21 -Pjava21-target"' jdk_version: 21 + os: ubuntu-24.04 + secrets: + s3_bucket: ${{ secrets.IT_CASE_S3_BUCKET }} + s3_access_key: ${{ secrets.IT_CASE_S3_ACCESS_KEY }} + s3_secret_key: ${{ secrets.IT_CASE_S3_SECRET_KEY }} + java21-arm: + name: "Java 21 / ARM" + uses: ./.github/workflows/template.flink-ci.yml + with: + workflow-caller-id: java21 + environment: 'PROFILE="-Dinclude_hadoop_aws -Djdk21 -Pjava21-target"' + jdk_version: 21 + os: ubuntu-24.04-arm + secrets: + s3_bucket: ${{ secrets.IT_CASE_S3_BUCKET }} + s3_access_key: ${{ secrets.IT_CASE_S3_ACCESS_KEY }} + s3_secret_key: ${{ secrets.IT_CASE_S3_SECRET_KEY }} + java21-riscv: + name: "Java 21 / RISC-V" + uses: ./.github/workflows/template.flink-ci.yml + with: + workflow-caller-id: java21 + environment: 'PROFILE="-Dinclude_hadoop_aws -Djdk21 -Pjava21-target"' + jdk_version: 21 + os: ubuntu-24.04-riscv secrets: s3_bucket: ${{ secrets.IT_CASE_S3_BUCKET }} s3_access_key: ${{ secrets.IT_CASE_S3_ACCESS_KEY }} diff --git a/.github/workflows/template.flink-ci.yml b/.github/workflows/template.flink-ci.yml index 2e79d4776adfee..e38401c3ab3bf3 100644 --- a/.github/workflows/template.flink-ci.yml +++ b/.github/workflows/template.flink-ci.yml @@ -32,6 +32,11 @@ on: description: "The Java version to use." default: 17 type: number + os: + description: OS to run this build. + required: false + type: string + default: ubuntu-24.04 secrets: s3_bucket: required: false @@ -70,7 +75,7 @@ env: jobs: compile: name: "Compile" - runs-on: ubuntu-24.04 + runs-on: ${{ inputs.os }} container: image: apache/flink-ci-docker:java_8_11_17_21_25_maven_386_noble # --init makes the process in the container being started as an init process which will clean up any daemon processes during shutdown @@ -136,7 +141,7 @@ jobs: packaging: name: "Test packaging/licensing" needs: compile - runs-on: ubuntu-24.04 + runs-on: ${{ inputs.os }} container: image: apache/flink-ci-docker:java_8_11_17_21_25_maven_386_noble # --init makes the process in the container being started as an init process which will clean up any daemon processes during shutdown @@ -189,7 +194,7 @@ jobs: test: name: "Test (module: ${{ matrix.module }})" needs: compile - runs-on: ubuntu-24.04 + runs-on: ${{ inputs.os }} container: image: apache/flink-ci-docker:java_8_11_17_21_25_maven_386_noble # --init makes the process in the container being started as an init process which will clean up any daemon processes during shutdown @@ -345,7 +350,7 @@ jobs: name: "E2E (group ${{ matrix.group }})" needs: compile # the end to end tests are not executed in Flink's CI Docker container due to problems when running Docker-in-Docker - runs-on: ubuntu-24.04 + runs-on: ${{ inputs.os }} timeout-minutes: 310 env: # timeout in minutes - this environment variable is required by uploading_watchdog.sh From e8b4451ee4915a5f71d5361bb642b3c0397b6c8a Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Mon, 14 Sep 2026 14:54:41 +0200 Subject: [PATCH 2/4] {debug} --- .github/workflows/ci.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ee5412dd472493..e363372dd93a37 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,6 +31,9 @@ on: - '.gitattributes' - 'azure-pipelines.yml' - 'tools/azure-pipelines/**' + pull_request: + branches: + - master workflow_dispatch: concurrency: @@ -49,6 +52,28 @@ jobs: with: environment: 'PROFILE="-Dinclude_hadoop_aws -Djdk17 -Pjava17-target"' jdk_version: 17 + os: ubuntu-24.04-arm + secrets: + s3_bucket: ${{ secrets.IT_CASE_S3_BUCKET }} + s3_access_key: ${{ secrets.IT_CASE_S3_ACCESS_KEY }} + s3_secret_key: ${{ secrets.IT_CASE_S3_SECRET_KEY }} + arm: + name: "ARM (Java 21)" + uses: ./.github/workflows/template.flink-ci.yml + with: + environment: 'PROFILE="-Dinclude_hadoop_aws -Djdk21 -Pjava21-target"' + jdk_version: 21 + secrets: + s3_bucket: ${{ secrets.IT_CASE_S3_BUCKET }} + s3_access_key: ${{ secrets.IT_CASE_S3_ACCESS_KEY }} + s3_secret_key: ${{ secrets.IT_CASE_S3_SECRET_KEY }} + riscv: + name: "RISC-V (Java 21)" + uses: ./.github/workflows/template.flink-ci.yml + with: + environment: 'PROFILE="-Dinclude_hadoop_aws -Djdk21 -Pjava21-target"' + jdk_version: 21 + os: ubuntu-24.04-riscv secrets: s3_bucket: ${{ secrets.IT_CASE_S3_BUCKET }} s3_access_key: ${{ secrets.IT_CASE_S3_ACCESS_KEY }} From b90453435501051633c327e89c8c1b02c663bfc7 Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Mon, 14 Sep 2026 14:56:43 +0200 Subject: [PATCH 3/4] fixup! [ci] Add runs on ARM and RISC-V --- .github/actions/job_init/action.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/actions/job_init/action.yml b/.github/actions/job_init/action.yml index e5c61510f7e7ec..6cdce878ed7632 100644 --- a/.github/actions/job_init/action.yml +++ b/.github/actions/job_init/action.yml @@ -96,8 +96,9 @@ runs: elif [[ $(uname -m) == "riscv64" ]]; then suffix="_RISCV64" fi - echo "JAVA_HOME=$JAVA_HOME_${{ inputs.jdk_version }}${suffix}" >> "${GITHUB_ENV}" - echo "PATH=$JAVA_HOME_${{ inputs.jdk_version }}${suffix}/bin:$PATH" >> "${GITHUB_ENV}" + JAVA_HOME_arch=JAVA_HOME_${{ inputs.jdk_version }}${suffix} + echo "JAVA_HOME=${!JAVA_HOME_arch}" >> "${GITHUB_ENV}" + echo "PATH=${!JAVA_HOME_arch}/bin:$PATH" >> "${GITHUB_ENV}" - name: "Determine cache namespace (PR base | branch | tag)" id: cache-ns From 79ae22c01425169aa5b249bb8f924ef1f77a243b Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Mon, 14 Sep 2026 14:59:14 +0200 Subject: [PATCH 4/4] fixup! [ci] Add runs on ARM and RISC-V --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e363372dd93a37..1031e6d020f900 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -52,7 +52,6 @@ jobs: with: environment: 'PROFILE="-Dinclude_hadoop_aws -Djdk17 -Pjava17-target"' jdk_version: 17 - os: ubuntu-24.04-arm secrets: s3_bucket: ${{ secrets.IT_CASE_S3_BUCKET }} s3_access_key: ${{ secrets.IT_CASE_S3_ACCESS_KEY }} @@ -63,6 +62,7 @@ jobs: with: environment: 'PROFILE="-Dinclude_hadoop_aws -Djdk21 -Pjava21-target"' jdk_version: 21 + os: ubuntu-24.04-arm secrets: s3_bucket: ${{ secrets.IT_CASE_S3_BUCKET }} s3_access_key: ${{ secrets.IT_CASE_S3_ACCESS_KEY }}