From 2a04426356659b60d58b9294c712bfe538356fe7 Mon Sep 17 00:00:00 2001 From: Conrad Date: Mon, 1 Apr 2024 19:14:57 +0200 Subject: [PATCH] Added automated versioning --- .github/workflows/lint.yml | 21 +++++++++++++++++++-- .github/workflows/publish.yml | 29 +++++++++++++++++++++++++++++ setup.py | 19 ++++++++++++++++++- 3 files changed, 66 insertions(+), 3 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 93a7993..3c32612 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,9 +1,8 @@ -name: Lint +name: Lint and tag on: push: branches: - - dev - master paths-ignore: - "**/.github/**" @@ -27,3 +26,21 @@ jobs: - uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: Adjusted files for isort & autopep + + tag: + runs-on: ubuntu-latest + needs: lint + steps: + - name: Git Version + uses: codacy/git-version@2.8.0 + id: git_version + with: + prefix: v + minor-identifier: "feat:" + major-identifier: "breaking:" + + - name: Create Tag + run: git tag -a v${{ steps.git_version.outputs.version }} -m "v${{ steps.git_version.outputs.version }}" + + - name: Push Tag + run: git push origin v${{ steps.git_version.outputs.version }} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index e69de29..65af29f 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -0,0 +1,29 @@ +name: Publish to pypi + +on: + push: + tags: + - '*' + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.build.txt + + - name: Build and publish + uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.PYPI_API_TOKEN }} diff --git a/setup.py b/setup.py index 53201cc..5bccb60 100644 --- a/setup.py +++ b/setup.py @@ -1,11 +1,28 @@ +import subprocess + from setuptools import find_packages, setup with open("requirements.txt") as f: requirements = f.read().splitlines() + +def get_latest_git_tag() -> str: + try: + tag = ( + subprocess.check_output(["git", "describe", "--tags", "--abbrev=0"]) + .strip() + .decode("utf-8") + ) + if tag.startswith("v"): + tag = tag[1:] + except subprocess.CalledProcessError: + raise RuntimeError("Unable to get latest git tag") + return str(tag) + + setup( name="creyPY", - version="0.0.9", + version=get_latest_git_tag(), description="My collection of Python and FastAPI shortcuts etc.", author="Conrad Großer", author_email="conrad@noah.tech",