From 0e0a2d872119d32d3a80a813a98e7a53255cc527 Mon Sep 17 00:00:00 2001 From: Dongjoon Hyun Date: Tue, 5 May 2026 12:04:55 -0700 Subject: [PATCH] [SPARK-56724][INFRA] Make `docker/*` GitHub Actions up-to-date This PR upgrades four `docker/*` GitHub Actions to the latest commit hashes approved by the Apache Software Foundation in [`infrastructure-actions/approved_patterns.yml`](https://github.com/apache/infrastructure-actions/blob/main/approved_patterns.yml): | Action | Before (tag) | After (tag) | | --- | --- | --- | | `docker/build-push-action` | `10e90e3645eae34f1e60eeb005ba3a3d33f178e8` (v6.19.2) | `bcafcacb16a39f128d818304e6c9c0c18556b85f` (v7.1.0) | | `docker/login-action` | `c94ce9fb468520275223c153574b00df6fe4bcc9` (v3.7.0) | `4907a6ddec9925e35a0a9e82d7399ccc52663121` (v4.1.0) | | `docker/setup-buildx-action` | `8d2750c68a42422c14e847fe6c8ac0403b4cbd6f` (v3.12.0) | `4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd` (v4.0.0) | | `docker/setup-qemu-action` | `29109295f81e9208d7d86ff1c6c12d2833863392` (v3.6.0) | `ce360397dd3f832beb865e1373c09c0e9f86d70a` (v4.0.0) | Updated workflow files (25 references in total): - `.github/workflows/build_and_test.yml` (8 references) - `.github/workflows/build_infra_images_cache.yml` (17 references) The previously pinned hashes were one major version behind upstream and predate the Node.js 20 runtime that Docker actions require going forward. Apache Infrastructure has already approved the newer hashes in `approved_patterns.yml`, so this PR brings Apache Spark's Docker actions onto the supported baseline while keeping ASF policy compliance. No. CI-only change; no Spark runtime, API, or release artifact is affected. Pass the CIs. Generated-by: Claude Code (claude-opus-4-7) Closes #55687 from dongjoon-hyun/SPARK-56724. Authored-by: Dongjoon Hyun Signed-off-by: Dongjoon Hyun --- .github/workflows/build_and_test.yml | 16 +++++----- .../workflows/build_infra_images_cache.yml | 30 +++++++++---------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index a07ec104dc645..3e9f79306b250 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -485,7 +485,7 @@ jobs: packages: write steps: - name: Login to GitHub Container Registry - uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 + uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 with: registry: ghcr.io username: ${{ github.actor }} @@ -505,13 +505,13 @@ jobs: git -c user.name='Apache Spark Test Account' -c user.email='sparktestacc@gmail.com' merge --no-commit --progress --squash FETCH_HEAD git -c user.name='Apache Spark Test Account' -c user.email='sparktestacc@gmail.com' commit -m "Merged commit" --allow-empty - name: Set up QEMU - uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 + uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a - name: Set up Docker Buildx - uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f + uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd - name: Build and push for branch-3.5 if: inputs.branch == 'branch-3.5' id: docker_build - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/infra/ push: true @@ -522,7 +522,7 @@ jobs: - name: Build and push (Documentation) if: ${{ inputs.branch != 'branch-3.5' && fromJson(needs.precondition.outputs.required).docs == 'true' && hashFiles('dev/spark-test-image/docs/Dockerfile') != '' }} id: docker_build_docs - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/docs/ push: true @@ -533,7 +533,7 @@ jobs: - name: Build and push (Linter) if: ${{ inputs.branch != 'branch-3.5' && fromJson(needs.precondition.outputs.required).lint == 'true' && hashFiles('dev/spark-test-image/lint/Dockerfile') != '' }} id: docker_build_lint - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/lint/ push: true @@ -544,7 +544,7 @@ jobs: - name: Build and push (SparkR) if: ${{ inputs.branch != 'branch-3.5' && fromJson(needs.precondition.outputs.required).sparkr == 'true' && hashFiles('dev/spark-test-image/sparkr/Dockerfile') != '' }} id: docker_build_sparkr - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/sparkr/ push: true @@ -556,7 +556,7 @@ jobs: if: ${{ inputs.branch != 'branch-3.5' && (fromJson(needs.precondition.outputs.required).pyspark == 'true' || fromJson(needs.precondition.outputs.required).pyspark-pandas == 'true') && env.PYSPARK_IMAGE_TO_TEST != '' }} id: docker_build_pyspark env: ${{ fromJSON(inputs.envs) }} - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/${{ env.PYSPARK_IMAGE_TO_TEST }}/ push: true diff --git a/.github/workflows/build_infra_images_cache.yml b/.github/workflows/build_infra_images_cache.yml index f59f11dce8eeb..d195f07c31ffd 100644 --- a/.github/workflows/build_infra_images_cache.yml +++ b/.github/workflows/build_infra_images_cache.yml @@ -52,11 +52,11 @@ jobs: - name: Checkout Spark repository uses: actions/checkout@v6 - name: Set up QEMU - uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 + uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a - name: Set up Docker Buildx - uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f + uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd - name: Login to DockerHub - uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 + uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 with: registry: ghcr.io username: ${{ github.actor }} @@ -64,7 +64,7 @@ jobs: - name: Build and push id: docker_build continue-on-error: true - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/infra/ push: true @@ -77,7 +77,7 @@ jobs: if: hashFiles('dev/spark-test-image/docs/Dockerfile') != '' id: docker_build_docs continue-on-error: true - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/docs/ push: true @@ -91,7 +91,7 @@ jobs: if: hashFiles('dev/spark-test-image/lint/Dockerfile') != '' id: docker_build_lint continue-on-error: true - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/lint/ push: true @@ -105,7 +105,7 @@ jobs: if: hashFiles('dev/spark-test-image/sparkr/Dockerfile') != '' id: docker_build_sparkr continue-on-error: true - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/sparkr/ push: true @@ -119,7 +119,7 @@ jobs: if: hashFiles('dev/spark-test-image/python-minimum/Dockerfile') != '' id: docker_build_pyspark_python_minimum continue-on-error: true - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/python-minimum/ push: true @@ -133,7 +133,7 @@ jobs: if: hashFiles('dev/spark-test-image/python-311/Dockerfile') != '' id: docker_build_pyspark_python_311 continue-on-error: true - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/python-311/ push: true @@ -147,7 +147,7 @@ jobs: if: hashFiles('dev/spark-test-image/python-312-classic-only/Dockerfile') != '' id: docker_build_pyspark_python_312_classic_only continue-on-error: true - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/python-312-classic-only/ push: true @@ -161,7 +161,7 @@ jobs: if: hashFiles('dev/spark-test-image/python-312/Dockerfile') != '' id: docker_build_pyspark_python_312 continue-on-error: true - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/python-312/ push: true @@ -175,7 +175,7 @@ jobs: if: hashFiles('dev/spark-test-image/python-312-pandas-3/Dockerfile') != '' id: docker_build_pyspark_python_312_pandas_3 continue-on-error: true - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/python-312-pandas-3/ push: true @@ -189,7 +189,7 @@ jobs: if: hashFiles('dev/spark-test-image/python-313/Dockerfile') != '' id: docker_build_pyspark_python_313 continue-on-error: true - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/python-313/ push: true @@ -203,7 +203,7 @@ jobs: if: hashFiles('dev/spark-test-image/python-314/Dockerfile') != '' id: docker_build_pyspark_python_314 continue-on-error: true - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/python-314/ push: true @@ -217,7 +217,7 @@ jobs: if: hashFiles('dev/spark-test-image/python-314-nogil/Dockerfile') != '' id: docker_build_pyspark_python_314_nogil continue-on-error: true - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/python-314-nogil/ push: true