Trigger bump dev version #3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # ----------------------------------------------------------------------------- | |
| # 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 |