From e4cc16a9d7087ea70b7bfe1d2e30db292a8231f5 Mon Sep 17 00:00:00 2001 From: Evan Rusackas Date: Mon, 27 Jul 2026 22:10:27 -0700 Subject: [PATCH] ci: add Kesin11/actions-timeline to the heavy CI workflows Adds a per-job/step Gantt chart (rendered as a mermaid diagram in the run summary) to the 15 substantive CI workflows -- the 13 setup-backend consumers plus superset-frontend.yml and docker.yml, the other two heaviest CI paths. Skips trivial bot/label/notification workflows that run in seconds and have nothing worth visualizing. For single-job (or single-heavy-job-in-a-linear-chain) workflows, the step is registered first, before checkout, so its post-processing hook -- which is what actually renders the timeline -- captures the full job including other steps' own cleanup. For workflows with multiple independent parallel jobs, added a dedicated `actions-timeline` terminal job (`needs: [...]`, `if: always()`) instead of duplicating the step into each parallel job: the action fetches every job of the whole run from the GitHub API regardless of which job it executes in, so one copy that runs after every sibling job completes produces one authoritative timeline, while N copies dropped into N parallel jobs would each race to render an incomplete gantt before their siblings finish. `expand-composite-actions: true` is set everywhere so setup-backend's internal steps (Python setup, uv install, apt package caching, dependency install) show up as their own bars rather than one opaque blob -- directly useful given the last two PRs' worth of composite-action changes. `actions: read` is added wherever needed to read job/step timing from the Actions API, either to the workflow's top-level `permissions:` (when the job in question has no job-level override) or directly into the relevant job's own `permissions:` block (when one already exists, since a job-level block replaces rather than merges with the workflow-level one). --- .github/workflows/check-python-deps.yml | 5 +++++ .github/workflows/dependency-review.yml | 5 +++++ .github/workflows/docker.yml | 11 +++++++++++ .github/workflows/pre-commit.yml | 5 +++++ .github/workflows/superset-app-cli.yml | 5 +++++ .github/workflows/superset-docs-deploy.yml | 5 +++++ .github/workflows/superset-e2e.yml | 11 +++++++++++ .github/workflows/superset-extensions-cli.yml | 5 +++++ .github/workflows/superset-frontend.yml | 11 +++++++++++ .github/workflows/superset-helm-lint-test.yml | 5 +++++ .github/workflows/superset-playwright.yml | 5 +++++ .github/workflows/superset-python-integrationtest.yml | 11 +++++++++++ .github/workflows/superset-python-presto-hive.yml | 11 +++++++++++ .github/workflows/superset-python-unittest.yml | 7 +++++++ .github/workflows/superset-translations.yml | 11 +++++++++++ 15 files changed, 113 insertions(+) diff --git a/.github/workflows/check-python-deps.yml b/.github/workflows/check-python-deps.yml index 77771022b92..21fac0c03bf 100644 --- a/.github/workflows/check-python-deps.yml +++ b/.github/workflows/check-python-deps.yml @@ -11,6 +11,7 @@ on: permissions: contents: read pull-requests: read + actions: read # cancel previous workflow jobs for PRs concurrency: @@ -21,6 +22,10 @@ jobs: check-python-deps: runs-on: ubuntu-26.04 steps: + - uses: Kesin11/actions-timeline@7bf79990b7c09f5dfb570ac30b814ca597bd538e # v3.1.1 + with: + expand-composite-actions: true + - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 6b69a214e9f..464502fe61d 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -20,6 +20,7 @@ concurrency: permissions: contents: read + actions: read jobs: dependency-review: @@ -50,6 +51,10 @@ jobs: # You cannot use a liccheck.ini file in this workflow. runs-on: ubuntu-26.04 steps: + - uses: Kesin11/actions-timeline@7bf79990b7c09f5dfb570ac30b814ca597bd538e # v3.1.1 + with: + expand-composite-actions: true + - name: "Checkout Repository" uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index db9bb93bdae..e6d10e8270b 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -213,3 +213,14 @@ jobs: shell: bash run: | docker compose -f docker-compose-image-tag.yml up superset-init --exit-code-from superset-init + + actions-timeline: + needs: [docker-build, docker-compose-image-tag] + if: always() + runs-on: ubuntu-26.04 + permissions: + actions: read + steps: + - uses: Kesin11/actions-timeline@7bf79990b7c09f5dfb570ac30b814ca597bd538e # v3.1.1 + with: + expand-composite-actions: true diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 7b93d78f04b..47481a04a24 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -15,6 +15,7 @@ on: permissions: contents: read + actions: read # cancel previous workflow jobs for PRs concurrency: @@ -32,6 +33,10 @@ jobs: # rarely differ across patch versions, so 3x per PR is wasteful. python-version: ${{ github.event_name == 'pull_request' && fromJSON('["current"]') || fromJSON('["current", "next"]') }} steps: + - uses: Kesin11/actions-timeline@7bf79990b7c09f5dfb570ac30b814ca597bd538e # v3.1.1 + with: + expand-composite-actions: true + - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: diff --git a/.github/workflows/superset-app-cli.yml b/.github/workflows/superset-app-cli.yml index 70d012760ce..298cef8a2ba 100644 --- a/.github/workflows/superset-app-cli.yml +++ b/.github/workflows/superset-app-cli.yml @@ -11,6 +11,7 @@ on: permissions: contents: read pull-requests: read + actions: read # cancel previous workflow jobs for PRs concurrency: @@ -40,6 +41,10 @@ jobs: ports: - 16379:6379 steps: + - uses: Kesin11/actions-timeline@7bf79990b7c09f5dfb570ac30b814ca597bd538e # v3.1.1 + with: + expand-composite-actions: true + - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: diff --git a/.github/workflows/superset-docs-deploy.yml b/.github/workflows/superset-docs-deploy.yml index 85760832834..91f85d1ec20 100644 --- a/.github/workflows/superset-docs-deploy.yml +++ b/.github/workflows/superset-docs-deploy.yml @@ -30,6 +30,7 @@ concurrency: permissions: contents: read + actions: read jobs: config: @@ -59,6 +60,10 @@ jobs: name: Build & Deploy runs-on: ubuntu-26.04 steps: + - uses: Kesin11/actions-timeline@7bf79990b7c09f5dfb570ac30b814ca597bd538e # v3.1.1 + with: + expand-composite-actions: true + - name: "Checkout ${{ github.event.workflow_run.head_sha || github.sha }}" uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: diff --git a/.github/workflows/superset-e2e.yml b/.github/workflows/superset-e2e.yml index ca94f2c68e5..409de7e74e5 100644 --- a/.github/workflows/superset-e2e.yml +++ b/.github/workflows/superset-e2e.yml @@ -340,3 +340,14 @@ jobs: exit 1 fi echo "playwright-tests result: $RESULT (changes: $CHANGES)" + + actions-timeline: + needs: [cypress-matrix, playwright-tests] + if: always() + runs-on: ubuntu-26.04 + permissions: + actions: read + steps: + - uses: Kesin11/actions-timeline@7bf79990b7c09f5dfb570ac30b814ca597bd538e # v3.1.1 + with: + expand-composite-actions: true diff --git a/.github/workflows/superset-extensions-cli.yml b/.github/workflows/superset-extensions-cli.yml index 0ee6eb3505c..d1eaffee5e5 100644 --- a/.github/workflows/superset-extensions-cli.yml +++ b/.github/workflows/superset-extensions-cli.yml @@ -11,6 +11,7 @@ on: permissions: contents: read pull-requests: read + actions: read # cancel previous workflow jobs for PRs concurrency: @@ -30,6 +31,10 @@ jobs: run: working-directory: superset-extensions-cli steps: + - uses: Kesin11/actions-timeline@7bf79990b7c09f5dfb570ac30b814ca597bd538e # v3.1.1 + with: + expand-composite-actions: true + - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: diff --git a/.github/workflows/superset-frontend.yml b/.github/workflows/superset-frontend.yml index 46cb237c4d8..9da3ec97ffd 100644 --- a/.github/workflows/superset-frontend.yml +++ b/.github/workflows/superset-frontend.yml @@ -195,3 +195,14 @@ jobs: run: | docker run --rm $TAG bash -c \ "npm run build-storybook && npx playwright install-deps && npx playwright install chromium && npm run test-storybook:ci" + + actions-timeline: + needs: [report-coverage, lint-frontend, validate-frontend, test-storybook] + if: always() + runs-on: ubuntu-26.04 + permissions: + actions: read + steps: + - uses: Kesin11/actions-timeline@7bf79990b7c09f5dfb570ac30b814ca597bd538e # v3.1.1 + with: + expand-composite-actions: true diff --git a/.github/workflows/superset-helm-lint-test.yml b/.github/workflows/superset-helm-lint-test.yml index db59101bfa9..650eff193e0 100644 --- a/.github/workflows/superset-helm-lint-test.yml +++ b/.github/workflows/superset-helm-lint-test.yml @@ -8,6 +8,7 @@ on: permissions: contents: read + actions: read # Serialize runs per PR without cancelling: when a first-time contributor's # queued runs are approved together, cancel-in-progress lets an older run @@ -21,6 +22,10 @@ jobs: lint-test: runs-on: ubuntu-26.04 steps: + - uses: Kesin11/actions-timeline@7bf79990b7c09f5dfb570ac30b814ca597bd538e # v3.1.1 + with: + expand-composite-actions: true + - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: diff --git a/.github/workflows/superset-playwright.yml b/.github/workflows/superset-playwright.yml index 944a3eabcb0..8daedebc61e 100644 --- a/.github/workflows/superset-playwright.yml +++ b/.github/workflows/superset-playwright.yml @@ -54,6 +54,7 @@ jobs: permissions: contents: read pull-requests: read + actions: read strategy: fail-fast: false matrix: @@ -79,6 +80,10 @@ jobs: ports: - 16379:6379 steps: + - uses: Kesin11/actions-timeline@7bf79990b7c09f5dfb570ac30b814ca597bd538e # v3.1.1 + with: + expand-composite-actions: true + # ------------------------------------------------------- # Conditional checkout based on context (same as Cypress workflow) - name: Checkout for push or pull_request event diff --git a/.github/workflows/superset-python-integrationtest.yml b/.github/workflows/superset-python-integrationtest.yml index fd8c4a39b6d..c511705fb3d 100644 --- a/.github/workflows/superset-python-integrationtest.yml +++ b/.github/workflows/superset-python-integrationtest.yml @@ -255,3 +255,14 @@ jobs: exit 1 fi echo "test-postgres result: $RESULT" + + actions-timeline: + needs: [test-mysql, test-postgres, test-sqlite] + if: always() + runs-on: ubuntu-26.04 + permissions: + actions: read + steps: + - uses: Kesin11/actions-timeline@7bf79990b7c09f5dfb570ac30b814ca597bd538e # v3.1.1 + with: + expand-composite-actions: true diff --git a/.github/workflows/superset-python-presto-hive.yml b/.github/workflows/superset-python-presto-hive.yml index 0eb264e83f1..60dea43d0e9 100644 --- a/.github/workflows/superset-python-presto-hive.yml +++ b/.github/workflows/superset-python-presto-hive.yml @@ -158,3 +158,14 @@ jobs: verbose: true use_oidc: true slug: apache/superset + + actions-timeline: + needs: [test-postgres-presto, test-postgres-hive] + if: always() + runs-on: ubuntu-26.04 + permissions: + actions: read + steps: + - uses: Kesin11/actions-timeline@7bf79990b7c09f5dfb570ac30b814ca597bd538e # v3.1.1 + with: + expand-composite-actions: true diff --git a/.github/workflows/superset-python-unittest.yml b/.github/workflows/superset-python-unittest.yml index 64f3c683ae6..7e5d8833547 100644 --- a/.github/workflows/superset-python-unittest.yml +++ b/.github/workflows/superset-python-unittest.yml @@ -101,7 +101,14 @@ jobs: if: always() runs-on: ubuntu-26.04 timeout-minutes: 5 + permissions: + contents: read + actions: read steps: + - uses: Kesin11/actions-timeline@7bf79990b7c09f5dfb570ac30b814ca597bd538e # v3.1.1 + with: + expand-composite-actions: true + - name: Check unit-tests result env: RESULT: ${{ needs.unit-tests.result }} diff --git a/.github/workflows/superset-translations.yml b/.github/workflows/superset-translations.yml index 68dbd1d47b8..e500d970a25 100644 --- a/.github/workflows/superset-translations.yml +++ b/.github/workflows/superset-translations.yml @@ -156,3 +156,14 @@ jobs: - name: Fail if regression detected if: steps.regression.outcome == 'failure' run: exit 1 + + actions-timeline: + needs: [frontend-check-translations, babel-extract] + if: always() + runs-on: ubuntu-26.04 + permissions: + actions: read + steps: + - uses: Kesin11/actions-timeline@7bf79990b7c09f5dfb570ac30b814ca597bd538e # v3.1.1 + with: + expand-composite-actions: true