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

potiuk pushed a commit to branch dependency-report-early
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit af2a3f51b5c775473f478b9eea3b6068b38255d4
Author: Jarek Potiuk <[email protected]>
AuthorDate: Sun Nov 1 20:34:55 2026 +0100

    Run the dependency upgrade summary beside the tests instead of after them
    
    The "Deps" jobs need only the CI images, but as part of finalize-tests they 
waited for every test
    to finish and then ran for up to 17 minutes: on a canary, finalize-tests 
started at minute 59 and
    the run ended at minute 78, with the image-cache push done at minute 69. In 
their own workflow,
    started once the CI images are built, they finish long before the tests. 
The CI passed gate and
    check-timed-out-jobs need them, so a failing summary still fails the run as 
before.
    
    Generated-by: Claude Opus 5
---
 .github/workflows/ci-amd.yml                     |  15 ++++
 .github/workflows/ci-arm.yml                     |  15 ++++
 .github/workflows/dependency-upgrade-summary.yml | 104 +++++++++++++++++++++++
 .github/workflows/finalize-tests.yml             |  60 -------------
 4 files changed, 134 insertions(+), 60 deletions(-)

diff --git a/.github/workflows/ci-amd.yml b/.github/workflows/ci-amd.yml
index 6acd387f3f8..7bfa615e13b 100644
--- a/.github/workflows/ci-amd.yml
+++ b/.github/workflows/ci-amd.yml
@@ -1526,6 +1526,19 @@ jobs:
     # breaking framework release should not stop finalize-tests from pushing 
the image cache.
     if: needs.build-info.outputs.run-agent-framework-tests == 'true'
 
+  dependency-upgrade-summary:
+    name: Dependency upgrade summary
+    needs: [build-info, build-ci-images]
+    uses: ./.github/workflows/dependency-upgrade-summary.yml
+    permissions:
+      contents: read
+    with:
+      runners: ${{ needs.build-info.outputs.runner-type }}
+      platform: ${{ needs.build-info.outputs.platform }}
+      python-versions: ${{ needs.build-info.outputs.python-versions }}
+      upgrade-to-newer-dependencies: ${{ 
needs.build-info.outputs.upgrade-to-newer-dependencies }}
+      use-uv: ${{ needs.build-info.outputs.use-uv }}
+
   finalize-tests:
     name: Finalize tests
     permissions:
@@ -1602,6 +1615,7 @@ jobs:
       - build-ts-sdk-docs
       - check-run-needed
       - ci-image-checks
+      - dependency-upgrade-summary
       - finalize-tests
       - gate
       - generate-constraints
@@ -1670,6 +1684,7 @@ jobs:
       - check-run-needed
       - check-timed-out-jobs
       - ci-image-checks
+      - dependency-upgrade-summary
       - finalize-tests
       - gate
       - generate-constraints
diff --git a/.github/workflows/ci-arm.yml b/.github/workflows/ci-arm.yml
index 09b0967b490..fa068f1ee74 100644
--- a/.github/workflows/ci-arm.yml
+++ b/.github/workflows/ci-arm.yml
@@ -1402,6 +1402,19 @@ jobs:
     # breaking framework release should not stop finalize-tests from pushing 
the image cache.
     if: needs.build-info.outputs.run-agent-framework-tests == 'true'
 
+  dependency-upgrade-summary:
+    name: Dependency upgrade summary
+    needs: [build-info, build-ci-images]
+    uses: ./.github/workflows/dependency-upgrade-summary.yml
+    permissions:
+      contents: read
+    with:
+      runners: ${{ needs.build-info.outputs.runner-type }}
+      platform: ${{ needs.build-info.outputs.platform }}
+      python-versions: ${{ needs.build-info.outputs.python-versions }}
+      upgrade-to-newer-dependencies: ${{ 
needs.build-info.outputs.upgrade-to-newer-dependencies }}
+      use-uv: ${{ needs.build-info.outputs.use-uv }}
+
   finalize-tests:
     name: Finalize tests
     permissions:
@@ -1478,6 +1491,7 @@ jobs:
       - build-ts-sdk-docs
       - check-run-needed
       - ci-image-checks
+      - dependency-upgrade-summary
       - finalize-tests
       - generate-constraints
       - migration-round-trip
@@ -1545,6 +1559,7 @@ jobs:
       - check-run-needed
       - check-timed-out-jobs
       - ci-image-checks
+      - dependency-upgrade-summary
       - finalize-tests
       - generate-constraints
       - migration-round-trip
diff --git a/.github/workflows/dependency-upgrade-summary.yml 
b/.github/workflows/dependency-upgrade-summary.yml
new file mode 100644
index 00000000000..626f594940c
--- /dev/null
+++ b/.github/workflows/dependency-upgrade-summary.yml
@@ -0,0 +1,104 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+---
+# Checks how far the constraints are behind the newest releases. It needs only 
the CI images, so it
+# runs beside the tests instead of after them: in finalize-tests it added up 
to 17 minutes to the
+# end of a canary run. dependency-upgrade-report.yml reads the inputs it saves 
on canaries on main.
+name: Dependency upgrade summary
+on:  # yamllint disable-line rule:truthy
+  workflow_call:
+    inputs:
+      runners:
+        description: "The array of labels (in json form) determining runners."
+        required: true
+        type: string
+      platform:
+        description: "Platform for the build - 'linux/amd64' or 'linux/arm64'"
+        required: true
+        type: string
+      python-versions:
+        description: "JSON-formatted array of Python versions to check"
+        required: true
+        type: string
+      upgrade-to-newer-dependencies:
+        description: "Whether to upgrade to newer dependencies (true/false)"
+        required: true
+        type: string
+      use-uv:
+        description: "Whether to use uv"
+        required: true
+        type: string
+permissions:
+  contents: read
+jobs:
+  dependency-upgrade-summary:
+    runs-on: ${{ format(fromJSON(inputs.runners)[0], '4+8', '16+32') }}
+    if: inputs.upgrade-to-newer-dependencies == 'true' && inputs.platform == 
'linux/amd64'
+    name: "Deps ${{ matrix.python-version }}:${{ matrix.constraints-mode }}"
+    strategy:
+      matrix:
+        python-version: ${{ fromJson(inputs.python-versions) }}
+        constraints-mode: ["constraints", "constraints-source-providers", 
"constraints-no-providers"]
+    env:
+      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+    steps:
+      - name: "Cleanup repo"
+        shell: bash
+        run: sudo rm -rf ${GITHUB_WORKSPACE}/*
+      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
+        uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1  # 
v7.0.1
+        with:
+          persist-credentials: false
+      - name: "Prepare breeze & CI image: ${{ matrix.python-version }}"
+        uses: ./.github/actions/prepare_breeze_and_image
+        with:
+          platform: ${{ inputs.platform }}
+          python: ${{ matrix.python-version }}
+          use-uv: ${{ inputs.use-uv }}
+          make-mnt-writeable-and-cleanup: true
+      # Scheduled and dispatched canaries on main leave the explanations to 
dependency-upgrade-report.yml
+      # and save the constraints they checked for it. Saving them never fails 
this step.
+      - name: "Deps: ${{ matrix.python-version }}:${{ matrix.constraints-mode 
}}"
+        shell: bash
+        run: |
+          REPORT_ARGS=(--explain-why)
+          if [[ "${INDEPENDENT_REPORT}" == "true" ]]; then
+            REPORT_ARGS=(--no-explain-why --save-constraints-to 
files/dependency-report)
+          fi
+          breeze release-management constraints-version-check \
+            --python "${MATRIX_PYTHON_VERSION}" \
+            --airflow-constraints-mode "${MATRIX_CONSTRAINTS_MODE}" 
"${REPORT_ARGS[@]}"
+        env:
+          MATRIX_PYTHON_VERSION: "${{ matrix.python-version }}"
+          MATRIX_CONSTRAINTS_MODE: "${{ matrix.constraints-mode }}"
+          INDEPENDENT_REPORT: >-
+            ${{ github.ref == 'refs/heads/main' &&
+                (github.event_name == 'schedule' || github.event_name == 
'workflow_dispatch') }}
+          VERBOSE: "false"
+      - name: "Upload dependency report inputs"
+        if: >-
+          !cancelled() && 
hashFiles('files/dependency-report/constraints-commit.txt') != ''
+        continue-on-error: true
+        uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 
 # v7.0.2
+        with:
+          name: "dependency-report-inputs-${{ matrix.python-version }}-${{ 
matrix.constraints-mode }}\
+            -${{ inputs.use-uv }}-${{ github.run_attempt }}"
+          path: files/dependency-report/
+          if-no-files-found: error
+          retention-days: 2
+          overwrite: true
diff --git a/.github/workflows/finalize-tests.yml 
b/.github/workflows/finalize-tests.yml
index 262cc2b9a66..52926b1028d 100644
--- a/.github/workflows/finalize-tests.yml
+++ b/.github/workflows/finalize-tests.yml
@@ -125,66 +125,6 @@ jobs:
       - name: "Diff in constraints for Python: ${{ 
inputs.python-versions-list-as-string }}"
         run: ./scripts/ci/constraints/ci_diff_constraints.sh
 
-  # Constraint commits are now handled by the dedicated 
update-constraints-on-push workflow
-  # triggered when uv.lock changes are pushed to main/test branches.
-  dependency-upgrade-summary:
-    runs-on: ${{ format(fromJSON(inputs.runners)[0], '4+8', '16+32') }}
-    needs: [update-constraints]
-    if: inputs.upgrade-to-newer-dependencies == 'true' && inputs.platform == 
'linux/amd64'
-    name: "Deps ${{ matrix.python-version }}:${{ matrix.constraints-mode }}"
-    strategy:
-      matrix:
-        python-version: ${{ fromJson(inputs.python-versions) }}
-        constraints-mode: ["constraints", "constraints-source-providers", 
"constraints-no-providers"]
-    env:
-      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-    steps:
-      - name: "Cleanup repo"
-        shell: bash
-        run: sudo rm -rf ${GITHUB_WORKSPACE}/*
-      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
-        uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1  # 
v7.0.1
-        with:
-          persist-credentials: false
-      - name: "Prepare breeze & CI image: ${{ matrix.python-version }}"
-        uses: ./.github/actions/prepare_breeze_and_image
-        with:
-          platform: ${{ inputs.platform }}
-          python: ${{ matrix.python-version }}
-          use-uv: ${{ inputs.use-uv }}
-          make-mnt-writeable-and-cleanup: true
-      # Scheduled and dispatched canaries on main leave the explanations to 
dependency-upgrade-report.yml
-      # and save the constraints they checked for it. Saving them never fails 
this step.
-      - name: "Deps: ${{ matrix.python-version }}:${{ matrix.constraints-mode 
}}"
-        shell: bash
-        run: |
-          REPORT_ARGS=(--explain-why)
-          if [[ "${INDEPENDENT_REPORT}" == "true" ]]; then
-            REPORT_ARGS=(--no-explain-why --save-constraints-to 
files/dependency-report)
-          fi
-          breeze release-management constraints-version-check \
-            --python "${MATRIX_PYTHON_VERSION}" \
-            --airflow-constraints-mode "${MATRIX_CONSTRAINTS_MODE}" 
"${REPORT_ARGS[@]}"
-        env:
-          MATRIX_PYTHON_VERSION: "${{ matrix.python-version }}"
-          MATRIX_CONSTRAINTS_MODE: "${{ matrix.constraints-mode }}"
-          INDEPENDENT_REPORT: >-
-            ${{ github.ref == 'refs/heads/main' &&
-                (github.event_name == 'schedule' || github.event_name == 
'workflow_dispatch') }}
-          VERBOSE: "false"
-      - name: "Upload dependency report inputs"
-        if: >-
-          !cancelled() && 
hashFiles('files/dependency-report/constraints-commit.txt') != ''
-        continue-on-error: true
-        uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 
 # v7.0.2
-        with:
-          name: "dependency-report-inputs-${{ matrix.python-version }}-${{ 
matrix.constraints-mode }}\
-            -${{ inputs.use-uv }}-${{ github.run_attempt }}"
-          path: files/dependency-report/
-          if-no-files-found: error
-          retention-days: 2
-          overwrite: true
-
   push-buildx-cache-to-github-registry:
     name: Push Regular Image Cache ${{ inputs.platform }}
     needs: [update-constraints]

Reply via email to