Skip to content

Trigger bump dev version #3

Trigger bump dev version

Trigger bump dev version #3

# -----------------------------------------------------------------------------
# Workflow: Bump Dev Version
#
# Description:
# This GitHub Actions workflow automatically increments the version number
# defined in `Config.xcconfig` on every push to the `dev` branch.
#
# Versioning Logic:
# - Reads the `LOOP_FOLLOW_MARKETING_VERSION` from `Config.xcconfig`.
# - If the version is in `MAJOR.MINOR.PATCH.BUILD` format (4 digits),
# the `BUILD` number is incremented by 1.
# - If the version is in `MAJOR.MINOR.PATCH` format (3 digits),
# a `.1` is appended to start a `BUILD` count.
#
# Example:
# - `0.5.0` → `0.5.0.1`
# - `0.5.0.3` → `0.5.0.4`
#
# The updated version is then committed and pushed back to the `dev` branch.
#
# Prerequisites:
# - `LOOP_FOLLOW_MARKETING_VERSION` must exist and be defined using the format:
# LOOP_FOLLOW_MARKETING_VERSION = x.y.z or x.y.z.w
# - GitHub Actions bot must have workflow permission to push to `dev`.
# -----------------------------------------------------------------------------
name: Bump Dev Version
on:
push:
branches:
- dev
jobs:
bump-version:
if: github.repository_owner == 'loopandlearn'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Bump dev version number in Config.xcconfig
run: |
FILE=Config.xcconfig
# Find the line with LOOP_FOLLOW_MARKETING_VERSION and extract the value
VERSION_LINE=$(grep -E '^LOOP_FOLLOW_MARKETING_VERSION *= *[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?' "$FILE")
CURRENT_VERSION=$(echo "$VERSION_LINE" | sed -E 's/^LOOP_FOLLOW_MARKETING_VERSION *= *//')
# Split version into components (up to 4)
IFS='.' read -r MAJOR MINOR FIX BUILD <<< "$CURRENT_VERSION"
# If 4th digit not present, start at 1; else increment
if [ -z "$BUILD" ]; then
BUILD=1
else
BUILD=$((BUILD + 1))
fi
# Construct new version
NEW_VERSION="$MAJOR.$MINOR.$FIX.$BUILD"
echo "New version: $NEW_VERSION"
# Escape dots in current version for sed replacement
ESCAPED_CURRENT_VERSION=$(echo "$CURRENT_VERSION" | sed 's/\./\\./g')
# Replace the LOOP_FOLLOW_MARKETING_VERSION line in-place with new version
if [[ "$OSTYPE" == "darwin"* ]]; then
sed -i '' -E "s/LOOP_FOLLOW_MARKETING_VERSION *= *$ESCAPED_CURRENT_VERSION/LOOP_FOLLOW_MARKETING_VERSION = $NEW_VERSION/" "$FILE"
else
sed -i -E "s/LOOP_FOLLOW_MARKETING_VERSION *= *$ESCAPED_CURRENT_VERSION/LOOP_FOLLOW_MARKETING_VERSION = $NEW_VERSION/" "$FILE"
fi
# Export version so it's available in the next step
echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV
- name: Commit and push changes
run: |
git add Config.xcconfig
git commit -m "CI: Bump dev version to $NEW_VERSION"
git push