Merge pull request #470 from loopandlearn/bb_schedule #50
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`. | |
| # - The version is `MAJOR.MINOR.PATCH` format (3 digits) | |
| # where PATCH is 0 for main branch, each update to dev increments by 1 | |
| # | |
| # Example: | |
| # - `2.4.0` for main | |
| # for dev → `2.4.1`, then → `2.4.2` | |
| # - next release (main) will be `2.5.0` | |
| # | |
| # Commit Handling: | |
| # The updated version is then committed and pushed back to the `dev` branch. | |
| # - The bump commit includes the `[skip ci]` tag in its message | |
| # - This prevents the workflow from re-triggering itself in a loop | |
| # | |
| # Prerequisites: | |
| # - `LOOP_FOLLOW_MARKETING_VERSION` must exist and be defined using the format: | |
| # LOOP_FOLLOW_MARKETING_VERSION = x.y.z | |
| # - GitHub Actions bot must have workflow permission to push to `dev`. | |
| # ----------------------------------------------------------------------------- | |
| name: zzz [DO NOT RUN] Bump LOOP_FOLLOW_MARKETING_VERSION on dev push | |
| on: | |
| push: | |
| branches: | |
| - dev | |
| jobs: | |
| bump-version: | |
| if: github.repository_owner == 'loopandlearn' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| token: ${{ secrets.LOOPFOLLOW_TOKEN_AUTOBUMP }} | |
| - 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 3) | |
| IFS='.' read -r MAJOR MINOR FIX <<< "$CURRENT_VERSION" | |
| # Increment FIX | |
| if [ -z "$FIX" ]; then | |
| echo "Error, FIX not found" | |
| else | |
| FIX=$((FIX + 1)) | |
| fi | |
| # Construct new version | |
| NEW_VERSION="$MAJOR.$MINOR.$FIX" | |
| 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 [skip ci]" | |
| git push |