# 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: false type: boolean update_latest: description: "Update latest tag?" required: true default: false 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" 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" git push origin latest --force ...