mirror of
https://github.com/apache/superset.git
synced 2026-07-28 17:42:40 +00:00
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).
172 lines
5.5 KiB
YAML
172 lines
5.5 KiB
YAML
# Python Presto/Hive unit tests
|
|
name: Python Presto/Hive
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- "master"
|
|
- "[0-9].[0-9]*"
|
|
pull_request:
|
|
types: [synchronize, opened, reopened, ready_for_review]
|
|
|
|
# cancel previous workflow jobs for PRs
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
changes:
|
|
runs-on: ubuntu-26.04
|
|
timeout-minutes: 10
|
|
permissions:
|
|
contents: read
|
|
pull-requests: read
|
|
outputs:
|
|
python: ${{ steps.check.outputs.python }}
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
persist-credentials: false
|
|
- name: Check for file changes
|
|
id: check
|
|
uses: ./.github/actions/change-detector/
|
|
with:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
test-postgres-presto:
|
|
needs: changes
|
|
if: needs.changes.outputs.python == 'true'
|
|
runs-on: ubuntu-26.04
|
|
timeout-minutes: 45
|
|
permissions:
|
|
id-token: write
|
|
env:
|
|
PYTHONPATH: ${{ github.workspace }}
|
|
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
|
|
REDIS_PORT: 16379
|
|
SUPERSET__SQLALCHEMY_DATABASE_URI: postgresql+psycopg2://superset:superset@127.0.0.1:15432/superset
|
|
SUPERSET__SQLALCHEMY_EXAMPLES_URI: presto://localhost:15433/memory/default
|
|
services:
|
|
postgres:
|
|
image: postgres:17-alpine
|
|
env:
|
|
POSTGRES_USER: superset
|
|
POSTGRES_PASSWORD: superset
|
|
ports:
|
|
# Use custom ports for services to avoid accidentally connecting to
|
|
# GitHub action runner's default installations
|
|
- 15432:5432
|
|
presto:
|
|
image: starburstdata/presto:350-e.6
|
|
env:
|
|
POSTGRES_USER: superset
|
|
POSTGRES_PASSWORD: superset
|
|
ports:
|
|
# Use custom ports for services to avoid accidentally connecting to
|
|
# GitHub action runner's default installations
|
|
- 15433:8080
|
|
redis:
|
|
image: redis:7-alpine
|
|
ports:
|
|
- 16379:6379
|
|
steps:
|
|
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
persist-credentials: false
|
|
submodules: recursive
|
|
- name: Setup Python
|
|
uses: ./.github/actions/setup-backend/
|
|
- name: Setup Postgres
|
|
uses: ./.github/actions/cached-dependencies
|
|
with:
|
|
run: setup-postgres
|
|
- name: Start Celery worker
|
|
uses: ./.github/actions/cached-dependencies
|
|
with:
|
|
run: celery-worker
|
|
- name: Python unit tests (PostgreSQL)
|
|
run: |
|
|
./scripts/python_tests.sh -m 'chart_data_flow or sql_json_flow'
|
|
- name: Upload code coverage
|
|
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
|
|
with:
|
|
flags: python,presto
|
|
verbose: true
|
|
use_oidc: true
|
|
slug: apache/superset
|
|
|
|
test-postgres-hive:
|
|
needs: changes
|
|
if: needs.changes.outputs.python == 'true'
|
|
runs-on: ubuntu-26.04
|
|
timeout-minutes: 45
|
|
permissions:
|
|
id-token: write
|
|
env:
|
|
PYTHONPATH: ${{ github.workspace }}
|
|
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
|
|
REDIS_PORT: 16379
|
|
SUPERSET__SQLALCHEMY_DATABASE_URI: postgresql+psycopg2://superset:superset@127.0.0.1:15432/superset
|
|
SUPERSET__SQLALCHEMY_EXAMPLES_URI: hive://localhost:10000/default
|
|
UPLOAD_FOLDER: /tmp/.superset/uploads/
|
|
services:
|
|
postgres:
|
|
image: postgres:17-alpine
|
|
env:
|
|
POSTGRES_USER: superset
|
|
POSTGRES_PASSWORD: superset
|
|
ports:
|
|
# Use custom ports for services to avoid accidentally connecting to
|
|
# GitHub action runner's default installations
|
|
- 15432:5432
|
|
redis:
|
|
image: redis:7-alpine
|
|
ports:
|
|
- 16379:6379
|
|
steps:
|
|
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
persist-credentials: false
|
|
submodules: recursive
|
|
- name: Create csv upload directory
|
|
run: sudo mkdir -p /tmp/.superset/uploads
|
|
- name: Give write access to the csv upload directory
|
|
run: sudo chown -R $USER:$USER /tmp/.superset
|
|
- name: Start hadoop and hive
|
|
run: docker compose -f scripts/databases/hive/docker-compose.yml up -d
|
|
- name: Setup Python
|
|
uses: ./.github/actions/setup-backend/
|
|
- name: Setup Postgres
|
|
uses: ./.github/actions/cached-dependencies
|
|
with:
|
|
run: setup-postgres
|
|
- name: Start Celery worker
|
|
uses: ./.github/actions/cached-dependencies
|
|
with:
|
|
run: celery-worker
|
|
- name: Python unit tests (PostgreSQL)
|
|
run: |
|
|
uv pip install --system -e .[hive]
|
|
./scripts/python_tests.sh -m 'chart_data_flow or sql_json_flow'
|
|
- name: Upload code coverage
|
|
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
|
|
with:
|
|
flags: python,hive
|
|
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
|