Run all workflows on Ubuntu 22.04 #588
Workflow file for this run
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
--- | |
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-22.04 | |
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-22.04 | |
- windows-latest | |
python-version: | |
- '3.9' | |
- '3.10' | |
- '3.11' | |
- '3.12' | |
- '3.13' | |
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-22.04 | |
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-22.04 | |
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-22.04 | |
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 |