From 59d7244d51579ab343adbcb018c1b0fc3bcb3dfe Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 3 Aug 2026 18:46:45 +0000 Subject: [PATCH] Run downstream tests only after the fast tests pass Downstream projects each take up to 10 minutes and are only informative when traitlets itself is healthy, but they were running in parallel with the regular test suite on every push and pull request. GitHub Actions has no cross-workflow `needs`, so turn downstream.yml into a reusable `workflow_call` workflow and invoke it from tests.yml behind the fast jobs (tests, minimum versions, lint, docs, prereleases, sdist). Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01SQAvW1A6CBxpneLgjm4qJu --- .github/workflows/downstream.yml | 10 +++------- .github/workflows/tests.yml | 12 ++++++++++++ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/.github/workflows/downstream.yml b/.github/workflows/downstream.yml index e22cbca04..2000af76b 100644 --- a/.github/workflows/downstream.yml +++ b/.github/workflows/downstream.yml @@ -1,13 +1,9 @@ name: Test downstream projects +# Called from tests.yml once the fast test jobs have passed, so we don't spend +# runner time on downstream projects when traitlets itself is broken. on: - push: - branches: ["main"] - pull_request: - -concurrency: - group: downstream-${{ github.ref }} - cancel-in-progress: true + workflow_call: jobs: ipython: diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 39e291932..6b66b77ae 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -139,6 +139,18 @@ jobs: python_package_manager: "uv pip" - uses: jupyterlab/maintainer-tools/.github/actions/test-sdist@v1 + # Downstream projects are slow and only meaningful if traitlets itself is + # healthy, so hold them until every fast job has finished and passed. + downstream: + needs: + - tests + - test_minimum_versions + - test_lint + - test_docs + - test_prereleases + - test_sdist + uses: ./.github/workflows/downstream.yml + check_links: runs-on: ubuntu-latest timeout-minutes: 10