Skip to content

Alphabetical checks #523

Alphabetical checks

Alphabetical checks #523

Workflow file for this run

---
name: CI pipeline
on:
pull_request_target:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
DBT_PROFILES_DIR: dbt_project
DBT_PROJECT_DIR: dbt_project
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
IMAGE_NAME: ${{ github.repository }}
POETRY_VERSION: "1.8.3"
POETRY_VIRTUALENVS_IN_PROJECT: true
REGISTRY: ghcr.io
jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: "0"
- name: checkout-merge
uses: check-spelling/[email protected]
- name: Determine python version
id: python-version
run: |
export PYTHON_VERSION=$(cat .python-version)
echo "PYTHON_VERSION: $PYTHON_VERSION"
echo "PYTHON_VERSION=$PYTHON_VERSION" >> $GITHUB_OUTPUT
- name: Setup Python
uses: ./.github/actions/setup_python_env
with:
poetry-version: ${{ env.POETRY_VERSION }}
python-version: ${{ steps.python-version.outputs.PYTHON_VERSION }}
- name: Run pre-commit
run: |
git diff --name-status origin/main..HEAD > changed_files.txt
cat changed_files.txt
cat changed_files.txt | xargs poetry run pre-commit run --files
unit-tests:
needs: [pre-commit]
runs-on: ${{ matrix.operating-system }}
permissions:
contents: write
id-token: write
issues: write
pull-requests: write
strategy:
fail-fast: false
matrix:
operating-system:
- ubuntu-latest
- windows-latest
python-version:
- '3.8'
- '3.9'
- '3.10'
- '3.11'
- '3.12'
steps:
- uses: actions/checkout@v4
- name: checkout-merge
if: matrix.operating-system != 'windows-latest'
uses: check-spelling/[email protected]
- name: Setup Python
uses: ./.github/actions/setup_python_env
with:
poetry-version: ${{ env.POETRY_VERSION }}
python-version: ${{ matrix.python-version }}
- name: Run pytest (Windows)
if: matrix.operating-system == 'windows-latest'
run: make test-windows
- name: Run pytest (unit tests)
if: matrix.operating-system != 'windows-latest'
run: make test-unit | tee pytest-coverage.txt && exit ${PIPESTATUS[0]}
- name: Pytest coverage comment
if: matrix.python-version == '3.11' && matrix.operating-system != 'windows-latest'
uses: MishaKav/pytest-coverage-comment@main
with:
pytest-coverage-path: ./pytest-coverage.txt
title: Coverage Report
badge-title: Coverage
junitxml-path: ./coverage.xml
- name: Run pytest (integration tests)
if: matrix.operating-system != 'windows-latest'
run: make test-integration
- name: Regenerate dbt artifacts and run `dbt-bouncer`
if: matrix.operating-system == 'windows-latest'
run: |
$env:Path += ';C:\Users\runneradmin\.local\bin'
poetry run dbt deps
poetry run dbt build
poetry run dbt docs generate
poetry run dbt-bouncer --config-file ./dbt-bouncer-example.yml
- name: Regenerate dbt artifacts and run `dbt-bouncer`
if: matrix.operating-system != 'windows-latest'
run: |
poetry run dbt deps
poetry run dbt build
poetry run dbt docs generate
poetry run dbt-bouncer --config-file ./dbt-bouncer-example.yml
e2e-tests:
needs: [pre-commit]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: checkout-merge
uses: check-spelling/[email protected]
- name: Determine python version
id: python-version
run: |
export PYTHON_VERSION=$(cat .python-version)
echo "PYTHON_VERSION: $PYTHON_VERSION"
echo "PYTHON_VERSION=$PYTHON_VERSION" >> $GITHUB_OUTPUT
- name: Setup Python
uses: ./.github/actions/setup_python_env
with:
poetry-version: ${{ env.POETRY_VERSION }}
python-version: ${{ steps.python-version.outputs.PYTHON_VERSION }}
- name: Build pex file
run: make build-pex
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build image
uses: docker/build-push-action@v6
with:
build-args: PYTHON_VERSION=${{ steps.python-version.outputs.PYTHON_VERSION }}
cache-from: type=gha
cache-to: type=gha,mode=max
context: .
load: true
push: false
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:ci
- name: Run e2e test
run: |
docker run --rm \
--volume "$PWD":/app \
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:ci \
--config-file /app/dbt-bouncer-example.yml
mkdocs-build:
needs: [pre-commit]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: checkout-merge
uses: check-spelling/[email protected]
- name: Determine python version
id: python-version
run: |
export PYTHON_VERSION=$(cat .python-version)
echo "PYTHON_VERSION: $PYTHON_VERSION"
echo "PYTHON_VERSION=$PYTHON_VERSION" >> $GITHUB_OUTPUT
- name: Setup Python
uses: ./.github/actions/setup_python_env
with:
poetry-version: ${{ env.POETRY_VERSION }}
python-version: ${{ steps.python-version.outputs.PYTHON_VERSION }}
- name: Build docs website
run: poetry run mkdocs build
pex-tests:
needs: [pre-commit]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: checkout-merge
uses: check-spelling/[email protected]
- name: Determine python version
id: python-version
run: |
export PYTHON_VERSION=$(cat .python-version)
echo "PYTHON_VERSION: $PYTHON_VERSION"
echo "PYTHON_VERSION=$PYTHON_VERSION" >> $GITHUB_OUTPUT
- name: Setup Python
uses: ./.github/actions/setup_python_env
with:
poetry-version: ${{ env.POETRY_VERSION }}
python-version: ${{ steps.python-version.outputs.PYTHON_VERSION }}
- name: Build pex file
run: make build-pex
- name: Test pex file
run: ./dist/dbt-bouncer.pex --config-file $PWD/dbt-bouncer-example.yml