Skip to content

Add step to install packaging dependencies #8

Add step to install packaging dependencies

Add step to install packaging dependencies #8

name: Publish on Version Change
on:
push:
branches: ["main"]
workflow_dispatch:
jobs:
publish-and-release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install Poetry
uses: snok/install-poetry@v1
with:
version: latest
virtualenvs-create: true
virtualenvs-in-project: true
- id: version
name: Read version
run: |
python - <<'PY'
import os
import tomllib
from pathlib import Path
current = tomllib.loads(Path("pyproject.toml").read_text())
version = current["tool"]["poetry"]["version"]
print(f"version: {version}")
with Path(os.environ["GITHUB_OUTPUT"]).open("a") as fh:
fh.write(f"version={version}\n")
PY
- id: release_check
name: Skip if release already exists
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
TAG="v${{ steps.version.outputs.version }}"
if gh release view "$TAG" >/dev/null 2>&1; then
echo "skip=true" >> "$GITHUB_OUTPUT"
else
echo "skip=false" >> "$GITHUB_OUTPUT"
fi
- name: Install dependencies
if: steps.release_check.outputs.skip != 'true'
run: |
poetry install --only main --no-interaction
- name: Publish to PyPI
if: steps.release_check.outputs.skip != 'true'
env:
POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_API_TOKEN }}
run: |
poetry publish --build --no-interaction
- name: Create tag and release
if: steps.release_check.outputs.skip != 'true'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
TAG="v${{ steps.version.outputs.version }}"
gh release create "$TAG" --title "$TAG" --notes "Automated release for $TAG"