106 lines
3.1 KiB
YAML
106 lines
3.1 KiB
YAML
# This GitHub Actions workflow handles version bumping and tag updates.
|
|
# It can be triggered either by:
|
|
# 1. Pushing to main branch - automatically bumps version and updates tags
|
|
# 2. Manual dispatch - allows independent control over stable and latest tags
|
|
|
|
---
|
|
name: Version and Tags
|
|
|
|
on: # yamllint disable-line rule:truthy
|
|
push:
|
|
branches:
|
|
- main
|
|
paths-ignore:
|
|
- '**/VERSION'
|
|
- '**/VERSION_YAML'
|
|
|
|
workflow_dispatch:
|
|
inputs:
|
|
update_stable:
|
|
description: "Update stable tag?"
|
|
required: true
|
|
default: true
|
|
type: boolean
|
|
update_latest:
|
|
description: "Update latest tag?"
|
|
required: true
|
|
default: true
|
|
type: boolean
|
|
|
|
jobs:
|
|
version-and-tag:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Set up Git
|
|
run: |
|
|
git config user.name "GitHub Actions"
|
|
git config user.email "actions@github.com"
|
|
|
|
- name: Bump version
|
|
run: |
|
|
chmod +x ./versioning/bump_version.sh
|
|
./versioning/bump_version.sh
|
|
|
|
- name: Push Changes and Tags
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
git push origin main
|
|
git push origin --tags --force
|
|
|
|
- name: Update stable tag
|
|
if: |
|
|
success() && (
|
|
github.event_name == 'workflow_dispatch' && inputs.update_stable ||
|
|
github.event_name == 'push'
|
|
)
|
|
run: |
|
|
# Verify version bump was successful
|
|
if [ ! -f "./versioning/VERSION" ]; then
|
|
echo "Error: VERSION file not found. Version bump may have failed."
|
|
exit 1
|
|
fi
|
|
|
|
# Backup existing tag
|
|
if git rev-parse --verify stable >/dev/null 2>&1; then
|
|
OLD_STABLE=$(git rev-parse stable)
|
|
echo "Backing up current stable tag ($OLD_STABLE)"
|
|
fi
|
|
|
|
# Update tag
|
|
NEW_VERSION=$(cat ./versioning/VERSION)
|
|
echo "Updating stable tag to $NEW_VERSION"
|
|
git tag -fa stable -m "Update stable tag to $NEW_VERSION"
|
|
git push origin stable --force
|
|
|
|
- name: Update latest tag
|
|
if: |
|
|
success() && (
|
|
github.event_name == 'workflow_dispatch' && inputs.update_latest ||
|
|
github.event_name == 'push'
|
|
)
|
|
run: |
|
|
# Verify version bump was successful
|
|
if [ ! -f "./versioning/VERSION" ]; then
|
|
echo "Error: VERSION file not found. Version bump may have failed."
|
|
exit 1
|
|
fi
|
|
|
|
# Backup existing tag
|
|
if git rev-parse --verify latest >/dev/null 2>&1; then
|
|
OLD_LATEST=$(git rev-parse latest)
|
|
echo "Backing up current latest tag ($OLD_LATEST)"
|
|
fi
|
|
|
|
# Update tag
|
|
NEW_VERSION=$(cat ./versioning/VERSION)
|
|
echo "Updating latest tag to $NEW_VERSION"
|
|
git tag -fa latest -m "Update latest tag to $NEW_VERSION"
|
|
git push origin latest --force
|
|
...
|