This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch backport-ci-20261025-v3-4-test
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit 011e84dbb1153d8eab07420746aa371d2456facc
Author: Jarek Potiuk <[email protected]>
AuthorDate: Sun Oct 25 19:28:59 2026 +0100

    Run shared distribution tests in a single CI job (#74566)
    
    * Run shared distribution tests in a single CI job
    
    The shared distributions matrix starts one runner per directory in
    shared/ (14 today) on every PR. Each leg spends ~15s on checkout and uv
    setup to run ~2-4s of tests, and the fan-out takes 14 of the 20
    concurrent jobs ASF allows per workflow.
    
    Running the distributions sequentially in one job keeps the same
    coverage, reports every failing distribution, and frees those slots.
    
    * Run each shared distribution with uv --exact for isolation
    
    * Wrap the shared distributions test loop line to satisfy yamllint
    
    Generated-by: Claude Opus 5
    
    ---------
    
    Co-authored-by: Jarek Potiuk <[email protected]>
    
    (cherry picked from commit 6b42e65a8ea366cd0e517e7bd79c2400fb92f4dc)
---
 .github/workflows/basic-tests.yml | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/.github/workflows/basic-tests.yml 
b/.github/workflows/basic-tests.yml
index f815fe936e9..4212f4bd872 100644
--- a/.github/workflows/basic-tests.yml
+++ b/.github/workflows/basic-tests.yml
@@ -131,14 +131,11 @@ jobs:
         working-directory: ./dev/breeze/
   tests-shared-distributions:
     timeout-minutes: 10
-    name: Shared ${{ matrix.shared-distribution }} tests
+    name: Shared distributions tests
     env:
       # Without a pin uv picks the runner's system Python, which can be older 
than Airflow supports.
       UV_PYTHON: "${{ inputs.default-python-version }}"
-    strategy:
-      fail-fast: false
-      matrix:
-        shared-distribution: ${{ fromJSON(inputs.shared-distributions-as-json) 
}}
+      SHARED_DISTRIBUTIONS: ${{ 
join(fromJSON(inputs.shared-distributions-as-json), ' ') }}
     runs-on: ${{ fromJSON(inputs.runners) }}
     steps:
       - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
@@ -157,9 +154,20 @@ jobs:
           fi
           echo "Installing uv==${UV_VERSION}"
           pip install "uv==${UV_VERSION}"
-      - name: "Run shared ${{ matrix.shared-distribution }} tests"
-        run: uv run --group dev pytest --color=yes -n auto
-        working-directory: shared/${{ matrix.shared-distribution }}
+      - name: "Run shared distributions tests"
+        run: |
+          failed=()
+          for dist in ${SHARED_DISTRIBUTIONS}; do
+            echo "::group::Shared ${dist} tests"
+            if ! (cd "shared/${dist}" && uv run --exact --group dev pytest 
--color=yes -n auto); then
+              failed+=("${dist}")
+            fi
+            echo "::endgroup::"
+          done
+          if (( ${#failed[@]} )); then
+            echo "::error::Shared distribution tests failed: ${failed[*]}"
+            exit 1
+          fi
   tests-scripts:
     timeout-minutes: 10
     name: Scripts tests

Reply via email to