diff --git a/.github/workflows/test_dbt_cloud.yml b/.github/workflows/test_dbt_cloud.yml new file mode 100644 index 0000000000..2d9356d2e5 --- /dev/null +++ b/.github/workflows/test_dbt_cloud.yml @@ -0,0 +1,82 @@ + +name: test dbt cloud + +on: + pull_request: + branches: + - master + - devel + workflow_dispatch: + +env: + # all credentials must be present to be passed to dbt cloud + DBT_CLOUD__ACCOUNT_ID: ${{ secrets.DBT_CLOUD__ACCOUNT_ID }} + DBT_CLOUD__JOB_ID: ${{ secrets.DBT_CLOUD__JOB_ID }} + DBT_CLOUD__API_TOKEN: ${{ secrets.DBT_CLOUD__API_TOKEN }} + + RUNTIME__LOG_LEVEL: ERROR + +jobs: + get_docs_changes: + uses: ./.github/workflows/get_docs_changes.yml + if: ${{ !github.event.pull_request.head.repo.fork }} + + run_dbt_cloud: + name: Tests dbt cloud + needs: get_docs_changes + if: needs.get_docs_changes.outputs.changes_outside_docs == 'true' + strategy: + fail-fast: false + matrix: + os: ["ubuntu-latest"] + # os: ["ubuntu-latest", "macos-latest", "windows-latest"] + defaults: + run: + shell: bash + runs-on: ${{ matrix.os }} + + steps: + + - name: Check out + uses: actions/checkout@master + + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: "3.10.x" + + - name: Install Poetry without dbt + uses: snok/install-poetry@v1.3.2 + with: + virtualenvs-create: true + virtualenvs-in-project: true + installer-parallel: true + + - name: Load cached venv + id: cached-poetry-dependencies + uses: actions/cache@v3 + with: + # path: ${{ steps.pip-cache.outputs.dir }} + path: .venv + key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }}-dbt-cloud + + - run: | + poetry run pytest tests/helpers/dbt_cloud_tests -k '(not venv)' + if: runner.os != 'Windows' + name: Run dbt runner - Linux/MAC + - run: | + poetry run pytest tests/helpers/dbt_cloud_tests -k "(not venv)" + if: runner.os == 'Windows' + name: Run dbt cloud - Windows + shell: cmd + + matrix_job_required_check: + name: dbt cloud tests + needs: run_dbt_cloud + runs-on: ubuntu-latest + if: always() + steps: + - name: Check matrix job results + if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') + run: | + echo "One or more matrix job tests failed or were cancelled. You may need to re-run them." && exit 1