Files
dance-lessons-coach/scripts/ci-version-bump.sh
Gabriel Radureau 66ba7f0c4e
All checks were successful
CI/CD Pipeline / Build Docker Cache (push) Successful in 13s
CI/CD Pipeline / CI Pipeline (push) Successful in 4m30s
🐛 fix: cross-platform sed and badge replacement issues
2026-04-08 16:51:38 +02:00

95 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
# CI script to handle automatic version bumping
# Usage: scripts/ci-version-bump.sh <commit_message> [--no-push]
set -e
if [ -z "$1" ]; then
echo "Error: Commit message not provided"
exit 1
fi
LAST_COMMIT=$1
VERSION_BUMPED="false"
NO_PUSH=false
# Parse flags
for arg in "$@"; do
if [ "$arg" = "--no-push" ]; then
NO_PUSH=true
fi
done
# Automatic version bump based on commit type
if echo "$LAST_COMMIT" | grep -q "^✨ feat:"; then
echo "🎯 Feature commit detected - bumping MINOR version"
./scripts/version-bump.sh minor
VERSION_BUMPED="true"
elif echo "$LAST_COMMIT" | grep -q "^🐛 fix:"; then
echo "🐛 Fix commit detected - bumping PATCH version"
./scripts/version-bump.sh patch
VERSION_BUMPED="true"
elif echo "$LAST_COMMIT" | grep -q "BREAKING CHANGE"; then
echo "💥 Breaking change detected - bumping MAJOR version"
./scripts/version-bump.sh major
VERSION_BUMPED="true"
else
echo "⏭️ No automatic version bump needed"
fi
# Update swagger version regardless of bump
source VERSION
NEW_VERSION="$MAJOR.$MINOR.$PATCH${PRERELEASE:+-$PRERELEASE}"
# Cross-platform sed command
# Detect if we're on macOS (BSD sed) or Linux (GNU sed)
SED_CMD=""
if [[ "$(uname)" == "Darwin" ]]; then
# macOS - requires empty string after -i
SED_CMD="sed -i ''"
else
# Linux - standard GNU sed
SED_CMD="sed -i"
fi
$SED_CMD "s|// @version [0-9.]*|// @version $NEW_VERSION|" cmd/server/main.go
# Commit version changes if bumped
if [ "$VERSION_BUMPED" = "true" ]; then
git config --global user.name "CI Bot"
git config --global user.email "ci@arcodange.fr"
# Set up credentials using Gitea token
if [ -n "$PACKAGES_TOKEN" ]; then
git config --global credential.helper store
echo "https://${PACKAGES_TOKEN}@gitea.arcodange.lab" > ~/.git-credentials
fi
git add VERSION cmd/server/main.go README.md
if git commit -m "chore: auto version bump [skip ci]"; then
# Skip push if --no-push flag is set
if [ "$NO_PUSH" = true ]; then
echo "Skipping git push due to --no-push flag"
echo "Successfully bumped version to $NEW_VERSION (committed locally)"
exit 0
fi
# Try push with retry logic for race conditions
for i in 1 2 3; do
if git push; then
echo "Successfully bumped version to $NEW_VERSION"
exit 0
else
echo "Version bump push attempt $i failed, retrying..."
if [ $i -eq 3 ]; then
echo "Final version bump push attempt failed - another job may have bumped version"
git pull --rebase || true
git push || echo "Version bump recovery push also failed"
fi
sleep 2
fi
done
else
echo "No version changes to commit"
fi
fi