From c1f7066ef25aefc5c89c6f899c45865e4f268ae8 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 | 36 +++++++++---------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 7e513d928b8fb..754a7cd956763 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -412,7 +412,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 }} @@ -432,13 +432,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 @@ -449,7 +449,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 @@ -460,7 +460,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 @@ -471,7 +471,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 @@ -483,7 +483,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 94185eba99780..9288f1dc7eb91 100644 --- a/.github/workflows/build_infra_images_cache.yml +++ b/.github/workflows/build_infra_images_cache.yml @@ -55,18 +55,18 @@ jobs: - name: Checkout Spark repository uses: actions/checkout@v4 - 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 }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push id: docker_build - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/infra/ push: true @@ -78,7 +78,7 @@ jobs: - name: Build and push (Documentation) if: 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 @@ -91,7 +91,7 @@ jobs: - name: Build and push (Linter) if: 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 @@ -104,7 +104,7 @@ jobs: - name: Build and push (SparkR) if: 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 @@ -117,7 +117,7 @@ jobs: - name: Build and push (PySpark with old dependencies) if: hashFiles('dev/spark-test-image/python-minimum/Dockerfile') != '' id: docker_build_pyspark_python_minimum - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/python-minimum/ push: true @@ -130,7 +130,7 @@ jobs: - name: Build and push (PySpark PS with old dependencies) if: hashFiles('dev/spark-test-image/python-ps-minimum/Dockerfile') != '' id: docker_build_pyspark_python_ps_minimum - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/python-ps-minimum/ push: true @@ -143,7 +143,7 @@ jobs: - name: Build and push (PySpark with PyPy 3.10) if: hashFiles('dev/spark-test-image/pypy-310/Dockerfile') != '' id: docker_build_pyspark_pypy_310 - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/pypy-310/ push: true @@ -156,7 +156,7 @@ jobs: - name: Build and push (PySpark with Python 3.10) if: hashFiles('dev/spark-test-image/python-310/Dockerfile') != '' id: docker_build_pyspark_python_310 - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/python-310/ push: true @@ -169,7 +169,7 @@ jobs: - name: Build and push (PySpark with Python 3.11) if: hashFiles('dev/spark-test-image/python-311/Dockerfile') != '' id: docker_build_pyspark_python_311 - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/python-311/ push: true @@ -182,7 +182,7 @@ jobs: - name: Build and push (PySpark Classic Only with Python 3.11) if: hashFiles('dev/spark-test-image/python-311-classic-only/Dockerfile') != '' id: docker_build_pyspark_python_311_classic_only - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/python-311-classic-only/ push: true @@ -195,7 +195,7 @@ jobs: - name: Build and push (PySpark with Python 3.12) if: hashFiles('dev/spark-test-image/python-312/Dockerfile') != '' id: docker_build_pyspark_python_312 - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/python-312/ push: true @@ -208,7 +208,7 @@ jobs: - name: Build and push (PySpark with Python 3.13) if: hashFiles('dev/spark-test-image/python-313/Dockerfile') != '' id: docker_build_pyspark_python_313 - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/python-313/ push: true @@ -221,7 +221,7 @@ jobs: - name: Build and push (PySpark with Python 3.13 no GIL) if: hashFiles('dev/spark-test-image/python-313-nogil/Dockerfile') != '' id: docker_build_pyspark_python_313_nogil - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/python-313-nogil/ push: true @@ -234,7 +234,7 @@ jobs: - name: Build and push (PySpark with Python 3.14) if: hashFiles('dev/spark-test-image/python-314/Dockerfile') != '' id: docker_build_pyspark_python_314 - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/python-314/ push: true @@ -247,7 +247,7 @@ jobs: - name: Build and push (PySpark with Numpy 2.1.3) if: hashFiles('dev/spark-test-image/numpy-213/Dockerfile') != '' id: docker_build_pyspark_numpy_213 - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f with: context: ./dev/spark-test-image/numpy-213/ push: true