mirror of
https://github.com/unshackle-dl/unshackle.git
synced 2026-06-15 05:32:04 +00:00
Add version-bump.yml: daily git-cliff semver bump on dev (version files, uv.lock, prepended CHANGELOG entry, tag). Switch release.yml gate to compare against latest GitHub release instead of latest tag, since every bump is now tagged. Allow .github/ through the hidden-dir gitignore rule.
73 lines
2.1 KiB
YAML
73 lines
2.1 KiB
YAML
name: Version Bump
|
|
|
|
on:
|
|
schedule:
|
|
- cron: "0 8 * * *" # daily 08:00 UTC
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
concurrency:
|
|
group: version-bump
|
|
cancel-in-progress: false
|
|
|
|
jobs:
|
|
bump:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
with:
|
|
ref: dev
|
|
fetch-depth: 0
|
|
|
|
- name: Install git-cliff
|
|
uses: taiki-e/install-action@v2
|
|
with:
|
|
tool: git-cliff
|
|
|
|
- name: Compute next version
|
|
id: bump
|
|
run: |
|
|
CURRENT=$(grep -m1 '^version' pyproject.toml | sed 's/version = "\(.*\)"/\1/')
|
|
NEXT=$(git cliff --bumped-version)
|
|
echo "Current version: $CURRENT, bumped version: $NEXT"
|
|
|
|
if [ "$NEXT" = "$CURRENT" ]; then
|
|
echo "No releasable commits since $CURRENT, skipping"
|
|
echo "skip=true" >> "$GITHUB_OUTPUT"
|
|
else
|
|
echo "skip=false" >> "$GITHUB_OUTPUT"
|
|
echo "version=$NEXT" >> "$GITHUB_OUTPUT"
|
|
fi
|
|
|
|
- name: Update version files
|
|
if: steps.bump.outputs.skip == 'false'
|
|
run: |
|
|
V=${{ steps.bump.outputs.version }}
|
|
sed -i "s/^version = \".*\"/version = \"$V\"/" pyproject.toml
|
|
sed -i "s/^__version__ = \".*\"/__version__ = \"$V\"/" unshackle/core/__init__.py
|
|
|
|
- name: Install uv
|
|
if: steps.bump.outputs.skip == 'false'
|
|
uses: astral-sh/setup-uv@v4
|
|
|
|
- name: Update uv.lock
|
|
if: steps.bump.outputs.skip == 'false'
|
|
run: uv lock
|
|
|
|
- name: Prepend changelog entry
|
|
if: steps.bump.outputs.skip == 'false'
|
|
run: git cliff --unreleased --tag ${{ steps.bump.outputs.version }} --prepend CHANGELOG.md
|
|
|
|
- name: Commit, tag, and push
|
|
if: steps.bump.outputs.skip == 'false'
|
|
run: |
|
|
V=${{ steps.bump.outputs.version }}
|
|
git config user.name "github-actions[bot]"
|
|
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
git add pyproject.toml unshackle/core/__init__.py uv.lock CHANGELOG.md
|
|
git commit -m "chore(release): bump version to $V"
|
|
git tag "$V"
|
|
git push origin dev "$V"
|