# ----------------------------------------------------------------------------- # 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 `APP_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: # - `APP_VERSION` must exist and be defined using the format: # APP_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 == 'nightscout' 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 APP_VERSION and extract the value VERSION_LINE=$(grep -E '^APP_VERSION *= *[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?' "$FILE") CURRENT_VERSION=$(echo "$VERSION_LINE" | sed -E 's/^APP_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 APP_VERSION line in-place with new version if [[ "$OSTYPE" == "darwin"* ]]; then sed -i '' -E "s/APP_VERSION *= *$ESCAPED_CURRENT_VERSION/APP_VERSION = $NEW_VERSION/" "$FILE" else sed -i -E "s/APP_VERSION *= *$ESCAPED_CURRENT_VERSION/APP_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