PyPI release workflow

This commit is contained in:
David Soria Parra
2024-11-11 22:28:28 +00:00
parent df33a9b71c
commit 753c76e479
7 changed files with 141 additions and 87 deletions

View File

@@ -1,29 +0,0 @@
name: ruff
on:
push:
branches: [main]
pull_request:
jobs:
format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true
- name: "Set up Python"
uses: actions/setup-python@v5
with:
python-version-file: ".python-version"
- name: Install the project
run: uv sync --frozen --all-extras --dev
- name: Run ruff format check
run: uv run --frozen ruff check .

View File

@@ -1,29 +0,0 @@
name: typecheck
on:
push:
branches: [main]
pull_request:
jobs:
typecheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true
- name: "Set up Python"
uses: actions/setup-python@v5
with:
python-version-file: ".python-version"
- name: Install the project
run: uv sync --frozen --all-extras --dev
- name: Run pyright
run: uv run --frozen pyright

9
.github/workflows/main-checks.yml vendored Normal file
View File

@@ -0,0 +1,9 @@
name: Main branch checks
on:
push:
branches: [main]
jobs:
checks:
uses: ./.github/workflows/shared.yml

View File

@@ -1,29 +0,0 @@
on:
push:
branches:
- main
pull_request:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true
- name: "Set up Python"
uses: actions/setup-python@v5
with:
python-version-file: ".python-version"
- name: Install the project
run: uv sync --frozen --all-extras --dev
- name: Run pytest
run: uv run --frozen pytest

55
.github/workflows/publish-pypi.yml vendored Normal file
View File

@@ -0,0 +1,55 @@
name: Publishing
on:
release:
types: [published]
jobs:
release-build:
name: Build distribution
runs-on: ubuntu-latest
needs: [checks]
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v3
- name: "Set up Python"
uses: actions/setup-python@v5
with:
python-version-file: ".python-version"
- name: Install the project
run: uv sync --frozen --all-extras --dev
- name: Build
run: uv build
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: release-dists
path: dist/
checks:
uses: ./.github/workflows/shared.yml
pypi-publish:
name: Upload release to PyPI
runs-on: ubuntu-latest
environment: release
needs:
- release-build
permissions:
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
steps:
- name: Retrieve release distributions
uses: actions/download-artifact@v4
with:
name: release-dists
path: dist/
- name: Publish package distributions to PyPI
uses: pypa/gh-action-pypi-publish@release/v1

View File

@@ -0,0 +1,8 @@
name: Pull request checks
on:
pull_request:
jobs:
checks:
uses: ./.github/workflows/shared.yml

69
.github/workflows/shared.yml vendored Normal file
View File

@@ -0,0 +1,69 @@
name: Shared Checks
on:
workflow_call:
jobs:
format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true
- name: "Set up Python"
uses: actions/setup-python@v5
with:
python-version-file: ".python-version"
- name: Install the project
run: uv sync --frozen --all-extras --dev
- name: Run ruff format check
run: uv run --frozen ruff check .
typecheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true
- name: "Set up Python"
uses: actions/setup-python@v5
with:
python-version-file: ".python-version"
- name: Install the project
run: uv sync --frozen --all-extras --dev
- name: Run pyright
run: uv run --frozen pyright
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true
- name: "Set up Python"
uses: actions/setup-python@v5
with:
python-version-file: ".python-version"
- name: Install the project
run: uv sync --frozen --all-extras --dev
- name: Run pytest
run: uv run --frozen pytest