name: Auto Release with Version Patch and Commit Message 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: Get latest commit message id: last_commit run: | msg=$(git log -1 --pretty=%B) # Zamiana nowych linii na \n aby ładnie wyświetlać w release body msg=${msg//$'\n'/\\n} echo "commit_msg=$msg" >> $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 }}` 📝 Last commit message: ``` ${{ steps.last_commit.outputs.commit_msg }} ``` env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}