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]
