Skip to content

release(uv): migrate to uv! 🌞 v0.1.0 #24

release(uv): migrate to uv! 🌞 v0.1.0

release(uv): migrate to uv! 🌞 v0.1.0 #24

Workflow file for this run

name: Testing
on:
push:
branches:
- main
tags:
- '**'
pull_request:
branches:
- main
permissions:
contents: write
jobs:
ruff:
name: Ruff Linting
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Install UV
uses: astral-sh/setup-uv@v4
- name: Set up Python
run: uv python install
- name: Install the project
run: uv sync --dev
- name: Ruff (linting + formating)
id: ruff
run: |
uv run pre-commit run --all
- name: Generate Badges
if: success() || failure()
run: |
mkdir -p badges/
uv run anybadge --overwrite --label=python --value="$(cat .python-version)" --value-format='%.2f' --file=badges/python.svg --color='dodgerblue'
uv run anybadge --overwrite --value="${{ steps.ruff.outcome }}" --label=ruff --file=badges/ruff.svg success=green failure=red
uv run anybadge --overwrite --label=version --value="v$(uvx --from=toml-cli toml get --toml-path=pyproject.toml project.version)" --file=badges/version.svg --color='green'
- name: Publish badges to GitHub Pages
if: (success() || failure()) && (github.ref_name == github.event.repository.default_branch)
uses: JamesIves/github-pages-deploy-action@v4
with:
folder: badges/
clean: false
pytest:
name: Pytest Tests
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [ "3.11", "3.12", "3.13" ]
fail-fast: false
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Install UV
uses: astral-sh/setup-uv@v4
with:
python-version: ${{ matrix.python-version }}
- name: Set up Python
run: uv python install
- name: Install the project
run: uv sync --dev
- name: Run Pytest
id: pytest
run: |
uv run coverage run -m pytest tests/
- name: Generate Badges
if: success() || failure()
run: |
uv run coverage report
mkdir -p badges/
uv run anybadge --overwrite --value="${{ steps.pytest.outcome }}" --label=pytest --file=badges/pytest.svg success=green failure=red
uv run anybadge --overwrite --value="$(uv run coverage report --format=total)" --file=badges/coverage.svg coverage
- name: Publish badges to GitHub Pages
if: (success() || failure()) && (github.ref_name == github.event.repository.default_branch)
uses: JamesIves/github-pages-deploy-action@v4
with:
folder: badges/
clean: false
audit:
name: Pip Audit
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Install UV
uses: astral-sh/setup-uv@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version-file: ".python-version"
- name: Install the project
run: uv sync --dev
- name: Generate dependency tree
run: uv tree
- name: Generate requirements.txt
run: |
uv pip compile pyproject.toml -o requirements.txt
- name: Pip Audit
id: audit
run: uvx pip-audit -r requirements.txt --fix
- name: Generate Badges
if: success() || failure()
run: |
mkdir -p badges/
uv run anybadge --overwrite --value="${{ steps.audit.outcome }}" --label=audit --file=badges/audit.svg success=green failure=red
- name: Publish badges to GitHub Pages
if: (success() || failure()) && (github.ref_name == github.event.repository.default_branch)
uses: JamesIves/github-pages-deploy-action@v4
with:
folder: badges/
clean: false
pypi-publish:
name: Upload release to PyPI
runs-on: ubuntu-latest
needs: [ ruff, pytest, audit ]
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
environment:
name: pypi
url: https://pypi.org/p/python-injector-framework
permissions:
id-token: write
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Install UV
uses: astral-sh/setup-uv@v4
- name: Set up Python
run: uv python install
- name: Install the project
run: uv sync --dev
- name: Build Project
run: |
uv build
- name: Publish package distributions to PyPI
uses: pypa/gh-action-pypi-publish@release/v1