Tests and Code Checks #1021
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# **what?** | |
# Runs code quality checks, tests, and verifies python build on | |
# all code commited to the repository. This workflow should not | |
# require any secrets since it runs for PRs from forked repos. | |
# By default, secrets are not passed to workflows running from | |
# a forked repo. | |
# **why?** | |
# Ensure code for dbt meets a certain quality standard. | |
# **when?** | |
# This will run for all PRs, when code is pushed to a release | |
# branch, and when manually triggered. | |
name: Tests and Code Checks | |
on: | |
push: | |
branches: | |
- "main" | |
- "develop" | |
- "*.latest" | |
- "releases/*" | |
- "move-tests2" | |
pull_request: | |
workflow_dispatch: | |
# run this once per night to ensure no regressions from latest dbt-core changes | |
schedule: | |
- cron: '0 5 * * *' # 5 UTC | |
permissions: read-all | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
code-quality: | |
name: ${{ matrix.toxenv }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
toxenv: [flake8] | |
env: | |
TOXENV: ${{ matrix.toxenv }} | |
PYTEST_ADDOPTS: "-v --color=yes" | |
steps: | |
- name: Check out the repository | |
uses: actions/checkout@v3 | |
with: | |
persist-credentials: false | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
- name: Install python dependencies | |
run: | | |
python -m pip install --user --upgrade pip | |
python -m pip install tox | |
python -m pip --version | |
tox --version | |
- name: Run tox | |
run: tox | |
tests: | |
name: test / python ${{ matrix.python-version }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: [3.7, 3.8, 3.9] | |
env: | |
TOXENV: "py" | |
PYTEST_ADDOPTS: "-v --color=yes" | |
DBT_ENABLE_LEGACY_LOGGER: True | |
steps: | |
- name: Check out the repository | |
uses: actions/checkout@v3 | |
with: | |
persist-credentials: false | |
- name: Set up postgres | |
run: | | |
sudo systemctl start postgresql.service | |
pg_isready | |
sudo -u postgres bash tests/setup_db.sh | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install python dependencies | |
run: | | |
python -m pip install --user --upgrade pip | |
python -m pip install tox | |
python -m pip --version | |
tox --version | |
- name: Run tox | |
run: tox | |
build: | |
name: build packages | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out the repository | |
uses: actions/checkout@v3 | |
with: | |
persist-credentials: false | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.8 | |
- name: Install python dependencies | |
run: | | |
python -m pip install --user --upgrade pip | |
python -m pip install --upgrade setuptools wheel twine check-wheel-contents | |
python -m pip --version | |
- name: Build distributions | |
run: python setup.py sdist bdist_wheel | |
- name: Show distributions | |
run: ls -lh dist/ | |
- name: Check distribution descriptions | |
run: | | |
twine check dist/* | |
- name: Check wheel contents | |
run: | | |
check-wheel-contents dist/*.whl --ignore W007,W008 | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: dist | |
path: dist/ | |
test-build: | |
name: verify packages / python ${{ matrix.python-version }} / ${{ matrix.os }} | |
needs: build | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
python-version: [3.7, 3.8, 3.9] | |
steps: | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install python dependencies | |
run: | | |
python -m pip install --user --upgrade pip | |
python -m pip install --upgrade wheel | |
python -m pip --version | |
- uses: actions/download-artifact@v3 | |
with: | |
name: dist | |
path: dist/ | |
- name: Show distributions | |
run: ls -lh dist/ | |
- name: Install wheel distributions | |
run: | | |
find ./dist/*.whl -maxdepth 1 -type f | xargs python -m pip install --force-reinstall --find-links=dist/ |