Skip to content

Re-usable action to setup python #131

Re-usable action to setup python

Re-usable action to setup python #131

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:
IMAGE_NAME: ${{ github.repository }}
POETRY_VERSION: "1.7.1"
POETRY_VIRTUALENVS_IN_PROJECT: true
REGISTRY: ghcr.io
jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: ./actions/setup_python_env
with:
poetry-version: ${{ env.POETRY_VERSION }}
- name: Run pre-commit
run: poetry run pre-commit run
unit-tests:
needs: [pre-commit]
runs-on: ubuntu-latest
permissions:
contents: write
id-token: write
issues: write
pull-requests: write
strategy:
fail-fast: false
matrix:
python-version:
- '3.8'
- '3.9'
- '3.10'
- '3.11'
- '3.12'
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: ./actions/setup_python_env
with:
poetry-version: ${{ env.POETRY_VERSION }}
python-version: ${{ matrix.python-version }}
- name: Run pytest
run: make test | tee pytest-coverage.txt && exit ${PIPESTATUS[0]}
- name: Pytest coverage comment
if: matrix.python-version == '3.11'
uses: MishaKav/pytest-coverage-comment@main
with:
pytest-coverage-path: ./pytest-coverage.txt
title: Coverage Report
badge-title: Coverage
junitxml-path: ./coverage.xml
e2e-tests:
needs: [pre-commit]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: ./actions/setup_python_env
with:
poetry-version: ${{ env.POETRY_VERSION }}
- name: Build pex file
run: make build-pex
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- 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: 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 \
/dbt-bouncer/dbt-bouncer.pex --config-file /app/dbt-bouncer-example.yml
github-action-tests:
needs: [pre-commit]
permissions:
contents: read
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version:
- '3.8'
- '3.9'
- '3.10'
- '3.11'
- '3.12'
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Run action
uses: ./
with:
config-file: dbt-bouncer-example.yml
pex-tests:
needs: [pre-commit]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: ./actions/setup_python_env
with:
poetry-version: ${{ env.POETRY_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