| # Python integration tests |
| name: Python-Integration |
| |
| on: |
| push: |
| branches: |
| - "master" |
| - "[0-9].[0-9]*" |
| pull_request: |
| types: [synchronize, opened, reopened, ready_for_review] |
| |
| concurrency: |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} |
| cancel-in-progress: true |
| |
| jobs: |
| test-mysql: |
| runs-on: ubuntu-24.04 |
| env: |
| PYTHONPATH: ${{ github.workspace }} |
| SUPERSET_CONFIG: tests.integration_tests.superset_test_config |
| REDIS_PORT: 16379 |
| SUPERSET__SQLALCHEMY_DATABASE_URI: | |
| mysql+mysqldb://superset:superset@127.0.0.1:13306/superset?charset=utf8mb4&binary_prefix=true |
| services: |
| mysql: |
| image: mysql:8.0 |
| env: |
| MYSQL_ROOT_PASSWORD: root |
| ports: |
| - 13306:3306 |
| options: >- |
| --health-cmd="mysqladmin ping --silent" |
| --health-interval=10s |
| --health-timeout=5s |
| --health-retries=5 |
| redis: |
| image: redis:7-alpine |
| options: --entrypoint redis-server |
| ports: |
| - 16379:6379 |
| steps: |
| - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" |
| uses: actions/checkout@v6 |
| with: |
| persist-credentials: false |
| submodules: recursive |
| - name: Check for file changes |
| id: check |
| uses: ./.github/actions/change-detector/ |
| with: |
| token: ${{ secrets.GITHUB_TOKEN }} |
| - name: Setup Python |
| uses: ./.github/actions/setup-backend/ |
| if: steps.check.outputs.python |
| - name: Setup MySQL |
| if: steps.check.outputs.python |
| uses: ./.github/actions/cached-dependencies |
| with: |
| run: setup-mysql |
| - name: Start Celery worker |
| if: steps.check.outputs.python |
| uses: ./.github/actions/cached-dependencies |
| with: |
| run: celery-worker |
| - name: Python integration tests (MySQL) |
| if: steps.check.outputs.python |
| run: | |
| ./scripts/python_tests.sh |
| - name: Upload code coverage |
| uses: codecov/codecov-action@v5 |
| with: |
| flags: python,mysql |
| token: ${{ secrets.CODECOV_TOKEN }} |
| verbose: true |
| test-postgres: |
| runs-on: ubuntu-24.04 |
| strategy: |
| matrix: |
| python-version: ["current", "previous", "next"] |
| 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 |
| services: |
| postgres: |
| image: postgres:16-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@v6 |
| with: |
| persist-credentials: false |
| submodules: recursive |
| - name: Check for file changes |
| id: check |
| uses: ./.github/actions/change-detector/ |
| with: |
| token: ${{ secrets.GITHUB_TOKEN }} |
| - name: Setup Python |
| uses: ./.github/actions/setup-backend/ |
| if: steps.check.outputs.python |
| with: |
| python-version: ${{ matrix.python-version }} |
| - name: Setup Postgres |
| if: steps.check.outputs.python |
| uses: ./.github/actions/cached-dependencies |
| with: |
| run: | |
| setup-postgres |
| - name: Start Celery worker |
| if: steps.check.outputs.python |
| uses: ./.github/actions/cached-dependencies |
| with: |
| run: celery-worker |
| - name: Python integration tests (PostgreSQL) |
| if: steps.check.outputs.python |
| run: | |
| ./scripts/python_tests.sh |
| - name: Upload code coverage |
| uses: codecov/codecov-action@v5 |
| with: |
| flags: python,postgres |
| token: ${{ secrets.CODECOV_TOKEN }} |
| verbose: true |
| |
| test-sqlite: |
| runs-on: ubuntu-24.04 |
| env: |
| PYTHONPATH: ${{ github.workspace }} |
| SUPERSET_CONFIG: tests.integration_tests.superset_test_config |
| REDIS_PORT: 16379 |
| SUPERSET__SQLALCHEMY_DATABASE_URI: | |
| sqlite:///${{ github.workspace }}/.temp/superset.db?check_same_thread=true |
| SUPERSET__SQLALCHEMY_EXAMPLES_URI: | |
| sqlite:///${{ github.workspace }}/.temp/examples.db?check_same_thread=true |
| services: |
| redis: |
| image: redis:7-alpine |
| ports: |
| - 16379:6379 |
| steps: |
| - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" |
| uses: actions/checkout@v6 |
| with: |
| persist-credentials: false |
| submodules: recursive |
| - name: Check for file changes |
| id: check |
| uses: ./.github/actions/change-detector/ |
| with: |
| token: ${{ secrets.GITHUB_TOKEN }} |
| - name: Setup Python |
| uses: ./.github/actions/setup-backend/ |
| if: steps.check.outputs.python |
| - name: Install dependencies |
| if: steps.check.outputs.python |
| uses: ./.github/actions/cached-dependencies |
| with: |
| run: | |
| # sqlite needs this working directory |
| mkdir ${{ github.workspace }}/.temp |
| - name: Start Celery worker |
| if: steps.check.outputs.python |
| uses: ./.github/actions/cached-dependencies |
| with: |
| run: celery-worker |
| - name: Python integration tests (SQLite) |
| if: steps.check.outputs.python |
| run: | |
| ./scripts/python_tests.sh |
| - name: Upload code coverage |
| uses: codecov/codecov-action@v5 |
| with: |
| flags: python,sqlite |
| token: ${{ secrets.CODECOV_TOKEN }} |
| verbose: true |