From 5e7b6778c0c572ef0b8c98995de8c19379dc1711 Mon Sep 17 00:00:00 2001 From: Dariusz L Date: Sun, 29 Jun 2025 00:04:49 +0200 Subject: [PATCH] Add GitHub Actions workflow for automated releases Introduces a release workflow that triggers on pushes to main. The workflow extracts the version from pyproject.toml, ensures unique version tags, and creates a GitHub release using softprops/action-gh-release. --- .github/workflows/release.yml | 48 +++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..64379cf --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,48 @@ +name: Auto Release with Version Patch + +on: + push: + branches: + - main + +jobs: + release: + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Extract base version from pyproject.toml + id: version + run: | + base=$(grep '^version *= *"' pyproject.toml | sed -E 's/version *= *"([^"]+)"/\1/') + echo "base_version=$base" >> $GITHUB_OUTPUT + + - name: Determine unique version tag + id: unique_tag + run: | + BASE="v${{ steps.version.outputs.base_version }}" + TAG=$BASE + COUNT=0 + + # Fetch remote tags + git fetch --tags + + while git rev-parse "$TAG" >/dev/null 2>&1; do + COUNT=$((COUNT + 1)) + TAG="$BASE.$COUNT" + done + + echo "final_tag=$TAG" >> $GITHUB_OUTPUT + + - name: Create GitHub Release + uses: softprops/action-gh-release@v1 + with: + tag_name: ${{ steps.unique_tag.outputs.final_tag }} + name: Release ${{ steps.unique_tag.outputs.final_tag }} + body: | + 📦 Release based on pyproject.toml version `${{ steps.version.outputs.base_version }}` + 🔁 Auto-postfix to avoid duplicate tag: `${{ steps.unique_tag.outputs.final_tag }}` + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}