diff --git a/.github/workflows/build_infra_images_cache.yml b/.github/workflows/build_infra_images_cache.yml index c3067f28306c3..f59f11dce8eeb 100644 --- a/.github/workflows/build_infra_images_cache.yml +++ b/.github/workflows/build_infra_images_cache.yml @@ -63,6 +63,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push id: docker_build + continue-on-error: true uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 with: context: ./dev/infra/ @@ -75,6 +76,7 @@ jobs: - name: Build and push (Documentation) if: hashFiles('dev/spark-test-image/docs/Dockerfile') != '' id: docker_build_docs + continue-on-error: true uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 with: context: ./dev/spark-test-image/docs/ @@ -88,6 +90,7 @@ jobs: - name: Build and push (Linter) if: hashFiles('dev/spark-test-image/lint/Dockerfile') != '' id: docker_build_lint + continue-on-error: true uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 with: context: ./dev/spark-test-image/lint/ @@ -101,6 +104,7 @@ jobs: - name: Build and push (SparkR) if: hashFiles('dev/spark-test-image/sparkr/Dockerfile') != '' id: docker_build_sparkr + continue-on-error: true uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 with: context: ./dev/spark-test-image/sparkr/ @@ -114,6 +118,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 + continue-on-error: true uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 with: context: ./dev/spark-test-image/python-minimum/ @@ -127,6 +132,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 + continue-on-error: true uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 with: context: ./dev/spark-test-image/python-311/ @@ -140,6 +146,7 @@ jobs: - name: Build and push (PySpark Classic Only with Python 3.12) 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 with: context: ./dev/spark-test-image/python-312-classic-only/ @@ -153,6 +160,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 + continue-on-error: true uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 with: context: ./dev/spark-test-image/python-312/ @@ -166,6 +174,7 @@ jobs: - name: Build and push (PySpark with Python 3.12 Pandas 3) 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 with: context: ./dev/spark-test-image/python-312-pandas-3/ @@ -179,6 +188,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 + continue-on-error: true uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 with: context: ./dev/spark-test-image/python-313/ @@ -192,6 +202,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 + continue-on-error: true uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 with: context: ./dev/spark-test-image/python-314/ @@ -205,6 +216,7 @@ jobs: - name: Build and push (PySpark with Python 3.14 no GIL) 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 with: context: ./dev/spark-test-image/python-314-nogil/ @@ -215,3 +227,31 @@ jobs: - name: Image digest (PySpark with Python 3.14 no GIL) if: hashFiles('dev/spark-test-image/python-314-nogil/Dockerfile') != '' run: echo ${{ steps.docker_build_pyspark_python_314_nogil.outputs.digest }} + - name: Fail if any image build failed + if: always() + run: | + status=0 + check() { + local name="$1" + local outcome="$2" + echo "$name: $outcome" + if [ "$outcome" = "failure" ]; then + status=1 + fi + } + check "base" "${{ steps.docker_build.outcome }}" + check "docs" "${{ steps.docker_build_docs.outcome }}" + check "lint" "${{ steps.docker_build_lint.outcome }}" + check "sparkr" "${{ steps.docker_build_sparkr.outcome }}" + check "pyspark-python-minimum" "${{ steps.docker_build_pyspark_python_minimum.outcome }}" + check "pyspark-python-311" "${{ steps.docker_build_pyspark_python_311.outcome }}" + check "pyspark-python-312-classic-only" "${{ steps.docker_build_pyspark_python_312_classic_only.outcome }}" + check "pyspark-python-312" "${{ steps.docker_build_pyspark_python_312.outcome }}" + check "pyspark-python-312-pandas-3" "${{ steps.docker_build_pyspark_python_312_pandas_3.outcome }}" + check "pyspark-python-313" "${{ steps.docker_build_pyspark_python_313.outcome }}" + check "pyspark-python-314" "${{ steps.docker_build_pyspark_python_314.outcome }}" + check "pyspark-python-314-nogil" "${{ steps.docker_build_pyspark_python_314_nogil.outcome }}" + if [ "$status" -ne 0 ]; then + echo "::error::One or more image builds failed; see entries above marked 'failure'." + fi + exit "$status"