| # 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-24.04 |
| timeout-minutes: 10 |
| permissions: |
| contents: read |
| pull-requests: read |
| outputs: |
| python: ${{ steps.check.outputs.python }} |
| steps: |
| - name: Checkout |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 |
| 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-24.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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 |
| 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-24.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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 |
| 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 |