Skip to content

Commit

Permalink
add some debugging
Browse files Browse the repository at this point in the history
  • Loading branch information
emmyoop committed Feb 1, 2024
1 parent a5064bb commit 66265d3
Showing 1 changed file with 136 additions and 125 deletions.
261 changes: 136 additions & 125 deletions .github/workflows/ci_dbt_core_testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,6 @@ jobs:
echo "dbt-core-ref=${{ github.event.inputs.dbt-core-ref }}" >> $GITHUB_OUTPUT
echo "dbt-common-ref=${{ github.event.inputs.dbt-common-ref }}" >> $GITHUB_OUTPUT
# TODO: maybe split these into 2 workflows. Then we can call unit tests always and just do int tests on merge? or just use an trigger checks
dbt-core-unit-test:
name: "Run unit tests for dbt-core"
needs: [job-prep]
Expand All @@ -102,148 +101,160 @@ jobs:
with:
python-version: "3.11"

- name: "Install python tools & dependencies"
run: |
python -m pip install --user --upgrade pip
python -m pip --version
python -m pip install -r dev-requirements.txt -r editable-requirements.txt
- name: "Check installed versions"
run: pip freeze

- name: "Update the version of dbt-common@${{ inputs.dbt-common-ref }}"
run: |
pip install pip install git+https://github.com/dbt-labs/dbt-common.git@${{ inputs.dbt-common-ref }} --force-reinstall
- name: "Check installed versions"
run: pip freeze

- name: Run unit tests
run: python -m pytest tests/unit

dbt-core-integration-metadata:
name: integration test metadata generation
runs-on: ubuntu-latest
if: ${{ github.event.name != 'pull_request' }}
outputs:
split-groups: ${{ steps.generate-split-groups.outputs.split-groups }}
include: ${{ steps.generate-include.outputs.include }}

steps:
- name: generate split-groups
id: generate-split-groups
run: |
MATRIX_JSON="["
for B in $(seq 1 ${{ env.PYTHON_INTEGRATION_TEST_WORKERS }}); do
MATRIX_JSON+=$(sed 's/^/"/;s/$/"/' <<< "${B}")
done
MATRIX_JSON="${MATRIX_JSON//\"\"/\", \"}"
MATRIX_JSON+="]"
echo "split-groups=${MATRIX_JSON}"
echo "split-groups=${MATRIX_JSON}" >> $GITHUB_OUTPUT
- name: generate include
id: generate-include
run: |
INCLUDE=('"python-version":"3.8","os":"windows-latest"' '"python-version":"3.8","os":"macos-latest"' )
INCLUDE_GROUPS="["
for include in ${INCLUDE[@]}; do
for group in $(seq 1 ${{ env.PYTHON_INTEGRATION_TEST_WORKERS }}); do
INCLUDE_GROUPS+=$(sed 's/$/, /' <<< "{\"split-group\":\"${group}\",${include}}")
done
done
INCLUDE_GROUPS=$(echo $INCLUDE_GROUPS | sed 's/,*$//g')
INCLUDE_GROUPS+="]"
echo "include=${INCLUDE_GROUPS}"
echo "include=${INCLUDE_GROUPS}" >> $GITHUB_OUTPUT
dbt-core-integration-tests:
name: (${{ matrix.split-group }}) integration test / python ${{ matrix.python-version }} / ${{ matrix.os }}
if: ${{ github.event.name != 'pull_request' }}

runs-on: ${{ matrix.os }}
timeout-minutes: 30
needs: [job-prep, dbt-core-integration-metadata]
strategy:
fail-fast: false
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11"]
os: [ubuntu-20.04]
split-group: ${{ fromJson(needs.dbt-core-integration-metadata.outputs.split-groups) }}
include: ${{ fromJson(needs.dbt-core-integration-metadata.outputs.include) }}
env:
DBT_INVOCATION_ENV: github-actions
DBT_TEST_USER_1: dbt_test_user_1
DBT_TEST_USER_2: dbt_test_user_2
DBT_TEST_USER_3: dbt_test_user_3

steps:
- name: "Check out the repository@${{ needs.job-prep.outputs.dbt-core-ref }}"
uses: actions/checkout@v4
with:
repository: dbt-labs/dbt-core
ref: ${{ needs.job-prep.outputs.dbt-core-ref }}

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

# TODO: do we want to run other os versions?
- name: Set up postgres (linux)
if: runner.os == 'Linux'
uses: ./.github/actions/setup-postgres-linux

- name: Set up postgres (macos)
if: runner.os == 'macOS'
uses: ./.github/actions/setup-postgres-macos

- name: Set up postgres (windows)
if: runner.os == 'Windows'
uses: ./.github/actions/setup-postgres-windows

- name: "Install python tools & dependencies"
run: |
python -m pip install --user --upgrade pip
python -m pip --version
python -m pip install -r dev-requirements.txt -r editable-requirements.txt
python -m pip install tox
tox --version
- name: "Check installed versions"
run: pip freeze

- name: "Update the version of dbt-common@${{ needs.job-prep.outputs.dbt-common-ref }}s"
- name: "Update the version of dbt-common@${{ inputs.dbt-common-ref }}"
run: |
pip install pip install git+https://github.com/dbt-labs/dbt-common.git@${{ needs.job-prep.outputs.dbt-common-ref }} --force-reinstall
pip install pip install git+https://github.com/dbt-labs/dbt-common.git@${{ inputs.dbt-common-ref }} --force-reinstall
- name: "Check installed versions"
run: pip freeze

- name: Run tests
run: |
python -m pytest {posargs} tests/functional -k "not tests/functional/graph_selection"
python -m pytest {posargs} tests/functional/graph_selection
python -m pytest {posargs} tests/adapter
- name: Run unit tests
run: tox
env:
PYTEST_ADDOPTS: ${{ format('--splits {0} --group {1}', env.PYTHON_INTEGRATION_TEST_WORKERS, matrix.split-group) }}

integration-report:
if: ${{ always() }}
name: Integration Test Suite
runs-on: ubuntu-latest
needs: [dbt-core-integration-tests]
steps:
- name: "Integration Tests Failed"
if: ${{ contains(needs.dbt-core-integration-tests.result, 'failure') || contains(needs.dbt-core-integration-tests.result, 'cancelled') }}
# when this is true the next step won't execute
run: |
echo "::notice title='Integration test suite failed'"
exit 1
TOXENV: unit

- name: "Integration Tests Passed"
if: ${{ github.event.name != 'pull_request' }}
run: |
echo "::notice title='Integration test suite passed'"
- name: "Check installed versions"
run: pip freeze

- name: "Integration Tests Skipped"
if: ${{ github.event.name == 'pull_request' }}
run: |
echo "::notice title='Integration test suite skipped on Pull Requests'"
# dbt-core-integration-metadata:
# name: integration test metadata generation
# runs-on: ubuntu-latest
# if: ${{ github.event.name != 'pull_request' }}
# outputs:
# split-groups: ${{ steps.generate-split-groups.outputs.split-groups }}
# include: ${{ steps.generate-include.outputs.include }}

# steps:
# - name: generate split-groups
# id: generate-split-groups
# run: |
# MATRIX_JSON="["
# for B in $(seq 1 ${{ env.PYTHON_INTEGRATION_TEST_WORKERS }}); do
# MATRIX_JSON+=$(sed 's/^/"/;s/$/"/' <<< "${B}")
# done
# MATRIX_JSON="${MATRIX_JSON//\"\"/\", \"}"
# MATRIX_JSON+="]"
# echo "split-groups=${MATRIX_JSON}"
# echo "split-groups=${MATRIX_JSON}" >> $GITHUB_OUTPUT

# - name: generate include
# id: generate-include
# run: |
# INCLUDE=('"python-version":"3.8","os":"windows-latest"' '"python-version":"3.8","os":"macos-latest"' )
# INCLUDE_GROUPS="["
# for include in ${INCLUDE[@]}; do
# for group in $(seq 1 ${{ env.PYTHON_INTEGRATION_TEST_WORKERS }}); do
# INCLUDE_GROUPS+=$(sed 's/$/, /' <<< "{\"split-group\":\"${group}\",${include}}")
# done
# done
# INCLUDE_GROUPS=$(echo $INCLUDE_GROUPS | sed 's/,*$//g')
# INCLUDE_GROUPS+="]"
# echo "include=${INCLUDE_GROUPS}"
# echo "include=${INCLUDE_GROUPS}" >> $GITHUB_OUTPUT

# dbt-core-integration-tests:
# name: (${{ matrix.split-group }}) integration test / python ${{ matrix.python-version }} / ${{ matrix.os }}
# if: ${{ github.event.name != 'pull_request' }}

# runs-on: ${{ matrix.os }}
# timeout-minutes: 30
# needs: [job-prep, dbt-core-integration-metadata]
# strategy:
# fail-fast: false
# matrix:
# python-version: ["3.8", "3.9", "3.10", "3.11"]
# os: [ubuntu-20.04]
# split-group: ${{ fromJson(needs.dbt-core-integration-metadata.outputs.split-groups) }}
# include: ${{ fromJson(needs.dbt-core-integration-metadata.outputs.include) }}
# env:
# DBT_INVOCATION_ENV: github-actions
# DBT_TEST_USER_1: dbt_test_user_1
# DBT_TEST_USER_2: dbt_test_user_2
# DBT_TEST_USER_3: dbt_test_user_3

# steps:
# - name: "Check out the repository@${{ needs.job-prep.outputs.dbt-core-ref }}"
# uses: actions/checkout@v4
# with:
# repository: dbt-labs/dbt-core
# ref: ${{ needs.job-prep.outputs.dbt-core-ref }}

# - name: Set up Python ${{ matrix.python-version }}
# uses: actions/setup-python@v5
# with:
# python-version: ${{ matrix.python-version }}

# - name: Set up postgres (linux)
# if: runner.os == 'Linux'
# uses: ./.github/actions/setup-postgres-linux

# - name: Set up postgres (macos)
# if: runner.os == 'macOS'
# uses: ./.github/actions/setup-postgres-macos

# - name: Set up postgres (windows)
# if: runner.os == 'Windows'
# uses: ./.github/actions/setup-postgres-windows

# - name: "Install python tools & dependencies"
# run: |
# python -m pip install --user --upgrade pip
# python -m pip --version
# python -m pip install -r dev-requirements.txt -r editable-requirements.txt

# - name: "Check installed versions"
# run: pip freeze

# - name: "Update the version of dbt-common@${{ needs.job-prep.outputs.dbt-common-ref }}s"
# run: |
# pip install pip install git+https://github.com/dbt-labs/dbt-common.git@${{ needs.job-prep.outputs.dbt-common-ref }} --force-reinstall

# - name: "Check installed versions"
# run: pip freeze

# - name: Run tests
# run: |
# python -m pytest {posargs} tests/functional -k "not tests/functional/graph_selection"
# python -m pytest {posargs} tests/functional/graph_selection
# python -m pytest {posargs} tests/adapter
# env:
# PYTEST_ADDOPTS: ${{ format('--splits {0} --group {1}', env.PYTHON_INTEGRATION_TEST_WORKERS, matrix.split-group) }}

# integration-report:
# if: ${{ always() }}
# name: Integration Test Suite
# runs-on: ubuntu-latest
# needs: [dbt-core-integration-tests]
# steps:
# - name: "Integration Tests Failed"
# if: ${{ contains(needs.dbt-core-integration-tests.result, 'failure') || contains(needs.dbt-core-integration-tests.result, 'cancelled') }}
# # when this is true the next step won't execute
# run: |
# echo "::notice title='Integration test suite failed'"
# exit 1

# - name: "Integration Tests Passed"
# if: ${{ github.event.name != 'pull_request' }}
# run: |
# echo "::notice title='Integration test suite passed'"

# - name: "Integration Tests Skipped"
# if: ${{ github.event.name == 'pull_request' }}
# run: |
# echo "::notice title='Integration test suite skipped on Pull Requests'"

0 comments on commit 66265d3

Please sign in to comment.