feat: migrate packaging to uv #1949
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 | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
concurrency: | |
group: ${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
# Tests for the template | |
test: | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: | |
- "3.9" | |
- "3.10" | |
- "3.11" | |
- "3.12" | |
os: | |
- ubuntu-latest | |
# - windows-latest | |
- macOS-latest | |
runs-on: ${{ matrix.os }} | |
name: "Template: ${{ matrix.python-version }} - ${{ matrix.os }}" | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- uses: astral-sh/setup-uv@v5 | |
- run: uv sync --no-python-downloads | |
shell: bash | |
- run: uv run pytest | |
shell: bash | |
# Generate package, run test, run linting and build docs | |
copier: | |
strategy: | |
fail-fast: false | |
matrix: | |
script: | |
- run: "uv run python -m pytest tests" | |
dir: "" | |
name: "pytest" | |
- run: "git init && git add . && uvx --with pre-commit-uv pre-commit run -a" | |
dir: "" | |
name: "pre-commit" | |
- run: "uv run make html" | |
dir: "docs" | |
name: "docs" | |
extra_options: | |
- project_name: "Simple Package" | |
project_slug: "simple-package" | |
value: "" | |
- project_name: "Simple CLI" | |
project_slug: "simple-cli" | |
value: "--data 'has_cli=yes' --data 'cli_name=mycli'" | |
- project_name: "Django Package" | |
project_slug: "django-simple-package" | |
value: "--data 'is_django_package=yes' --data 'documentation=yes'" | |
runs-on: ubuntu-latest | |
name: "Generated: ${{ matrix.script.name }} ${{ matrix.extra_options.project_name }}" | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
id: setup-python | |
with: | |
python-version: "3.11" | |
- uses: astral-sh/setup-uv@v5 | |
- run: | | |
uvx copier copy \ | |
. \ | |
my-project \ | |
--UNSAFE \ | |
--data 'full_name=Bruno Alla' \ | |
--data '[email protected]' \ | |
--data 'github_username=dummy' \ | |
--data 'project_name=${{ matrix.extra_options.project_name }}' \ | |
--data 'project_slug=${{ matrix.extra_options.project_slug }}' \ | |
--data 'project_short_description=Just a great project' \ | |
--data 'open_source_license=MIT' \ | |
${{ matrix.extra_options.value }} \ | |
--defaults | |
env: | |
PIPX_DEFAULT_PYTHON: ${{ steps.setup-python.outputs.python-path }} | |
- run: cat pyproject.toml | |
working-directory: my-project | |
env: | |
PIPX_DEFAULT_PYTHON: ${{ steps.setup-python.outputs.python-path }} | |
- run: uv sync --group docs | |
working-directory: my-project | |
- run: ${{ matrix.script.run }} | |
working-directory: my-project/${{ matrix.script.dir }} |