Merge pull request #1 from Asm3r96/dependabot/github_actions/actions/… #6
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release | |
| on: | |
| push: | |
| branches: | |
| - main | |
| paths-ignore: | |
| - VERSION | |
| - CHANGELOG.md | |
| workflow_dispatch: | |
| inputs: | |
| bump: | |
| description: "Version bump type" | |
| required: true | |
| default: patch | |
| type: choice | |
| options: | |
| - patch | |
| - minor | |
| - major | |
| permissions: | |
| contents: write | |
| jobs: | |
| release: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Configure git | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
| - name: Bump version | |
| id: bump | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| bump_type="$(jq -r '.inputs.bump // "patch"' "$GITHUB_EVENT_PATH")" | |
| current="$(cat VERSION 2>/dev/null || echo "0.1.0")" | |
| IFS='.' read -r major minor patch <<< "$current" | |
| case "$bump_type" in | |
| major) | |
| major=$((major + 1)) | |
| minor=0 | |
| patch=0 | |
| ;; | |
| minor) | |
| minor=$((minor + 1)) | |
| patch=0 | |
| ;; | |
| patch) | |
| patch=$((patch + 1)) | |
| ;; | |
| *) | |
| echo "Invalid bump type" >&2 | |
| exit 1 | |
| ;; | |
| esac | |
| next="$major.$minor.$patch" | |
| tag="v$next" | |
| echo "$next" > VERSION | |
| echo "version=$next" >> "$GITHUB_OUTPUT" | |
| echo "tag=$tag" >> "$GITHUB_OUTPUT" | |
| - name: Update changelog | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| today="$(date +%F)" | |
| version="${{ steps.bump.outputs.version }}" | |
| tag="${{ steps.bump.outputs.tag }}" | |
| if [ ! -f CHANGELOG.md ]; then | |
| printf '# Changelog\n\nAll notable changes to this project will be documented in this file.\n' > CHANGELOG.md | |
| fi | |
| tmpfile="$(mktemp)" | |
| { | |
| echo "# Changelog" | |
| echo | |
| echo "All notable changes to this project will be documented in this file." | |
| echo | |
| echo "## [$tag] - $today" | |
| echo "### Changed" | |
| echo "- Release $tag" | |
| echo | |
| sed '1,4d' CHANGELOG.md || true | |
| } > "$tmpfile" | |
| mv "$tmpfile" CHANGELOG.md | |
| - name: Commit and push | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| git add VERSION CHANGELOG.md | |
| if git diff --cached --quiet; then | |
| echo "No version changes to commit" | |
| exit 0 | |
| fi | |
| git commit -m "release: ${{ steps.bump.outputs.tag }}" | |
| git push origin "HEAD:${GITHUB_REF_NAME}" | |
| - name: Create and push tag | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| tag="${{ steps.bump.outputs.tag }}" | |
| if git rev-parse "$tag" >/dev/null 2>&1; then | |
| echo "Tag $tag already exists" | |
| exit 1 | |
| fi | |
| git tag -a "$tag" -m "Release $tag" | |
| git push origin "$tag" | |
| - name: Publish GitHub release | |
| shell: bash | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| run: | | |
| set -euo pipefail | |
| tag="${{ steps.bump.outputs.tag }}" | |
| if gh release view "$tag" >/dev/null 2>&1; then | |
| echo "Release $tag already exists" | |
| exit 0 | |
| fi | |
| gh release create "$tag" \ | |
| --title "Release $tag" \ | |
| --generate-notes |