# 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-20.04 strategy: matrix: python-version: ["3.9"] 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:5.7 env: MYSQL_ROOT_PASSWORD: root ports: - 13306:3306 redis: image: redis:7-alpine options: --entrypoint redis-server ports: - 16379:6379 steps: - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" uses: actions/checkout@v4 with: persist-credentials: false submodules: recursive - name: Check if python changes are present id: check env: GITHUB_REPO: ${{ github.repository }} PR_NUMBER: ${{ github.event.pull_request.number }} continue-on-error: true run: ./scripts/ci_check_no_file_changes.sh python - name: Setup Python uses: ./.github/actions/setup-backend/ if: steps.check.outcome == 'failure' with: python-version: ${{ matrix.python-version }} - name: Setup MySQL if: steps.check.outcome == 'failure' uses: ./.github/actions/cached-dependencies with: run: | setup-mysql - name: Run celery if: steps.check.outcome == 'failure' run: celery --app=superset.tasks.celery_app:app worker -Ofair -c 2 & - name: Python integration tests (MySQL) if: steps.check.outcome == 'failure' run: | ./scripts/python_tests.sh - name: Upload code coverage if: steps.check.outcome == 'failure' run: | bash .github/workflows/codecov.sh -c -F python -F mysql test-postgres: runs-on: ubuntu-20.04 strategy: matrix: python-version: ["3.9", "3.10"] 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:15-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@v4 with: persist-credentials: false submodules: recursive - name: Check if python changes are present id: check env: GITHUB_REPO: ${{ github.repository }} PR_NUMBER: ${{ github.event.pull_request.number }} continue-on-error: true run: ./scripts/ci_check_no_file_changes.sh python - name: Setup Python uses: ./.github/actions/setup-backend/ if: steps.check.outcome == 'failure' with: python-version: ${{ matrix.python-version }} - name: Setup Postgres if: steps.check.outcome == 'failure' uses: ./.github/actions/cached-dependencies with: run: | setup-postgres - name: Run celery if: steps.check.outcome == 'failure' run: celery --app=superset.tasks.celery_app:app worker -Ofair -c 2 & - name: Python integration tests (PostgreSQL) if: steps.check.outcome == 'failure' run: | ./scripts/python_tests.sh - name: Upload code coverage if: steps.check.outcome == 'failure' run: | bash .github/workflows/codecov.sh -c -F python -F postgres test-sqlite: runs-on: ubuntu-20.04 strategy: matrix: python-version: ["3.9"] 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@v4 with: persist-credentials: false submodules: recursive - name: Check if python changes are present id: check env: GITHUB_REPO: ${{ github.repository }} PR_NUMBER: ${{ github.event.pull_request.number }} continue-on-error: true run: ./scripts/ci_check_no_file_changes.sh python - name: Setup Python uses: ./.github/actions/setup-backend/ if: steps.check.outcome == 'failure' with: python-version: ${{ matrix.python-version }} - name: Install dependencies if: steps.check.outcome == 'failure' uses: ./.github/actions/cached-dependencies with: run: | # sqlite needs this working directory mkdir ${{ github.workspace }}/.temp - name: Run celery if: steps.check.outcome == 'failure' run: celery --app=superset.tasks.celery_app:app worker -Ofair -c 2 & - name: Python integration tests (SQLite) if: steps.check.outcome == 'failure' run: | ./scripts/python_tests.sh - name: Upload code coverage if: steps.check.outcome == 'failure' run: | bash .github/workflows/codecov.sh -c -F python -F sqlite