Skip to content

Merge pull request #1 from Asm3r96/dependabot/github_actions/actions/… #6

Merge pull request #1 from Asm3r96/dependabot/github_actions/actions/…

Merge pull request #1 from Asm3r96/dependabot/github_actions/actions/… #6

Workflow file for this run

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