| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- # -----------------------------------------------------------------------------
- # Workflow: `auto_version_dev.yml`
- #
- # Description:
- # This GitHub Actions workflow automatically manages and increments the
- # `APP_DEV_VERSION` defined in `Config.xcconfig` on every push to `dev` branch.
- # This version is used for internal tracking and diagnostics (e.g. in
- # Crashlytics) and follows a 4-digit semantic versioning format:
- # `MAJOR.MINOR.PATCH.FEATURE`.
- #
- # Versioning Logic:
- # - Reads the base version from `APP_VERSION = x.y.z`
- # - Reads the last internal dev version from `APP_DEV_VERSION`
- #
- # Behavior:
- # - If `APP_DEV_VERSION` matches `APP_VERSION` (e.g. both are `0.5.0`),
- # it assumes the first dev push after a release and sets `APP_DEV_VERSION`
- # to `APP_VERSION.1` (e.g. `0.5.0.1`)
- # - If `APP_DEV_VERSION` is already in 4-digit form (e.g. `0.5.0.3`),
- # it increments the fourth digit (e.g. → `0.5.0.4`)
- #
- # Example Progression:
- # - Release sets `APP_VERSION = 0.5.0`, `APP_DEV_VERSION = 0.5.0`
- # - First push to `dev`: → `APP_DEV_VERSION = 0.5.0.1`
- # - Second push to `dev`: → `APP_DEV_VERSION = 0.5.0.2`
- # - ...
- #
- # Commit Handling:
- # The updated value is 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:
- # - `APP_VERSION` must be present in `Config.xcconfig` in the form `x.y.z`
- # - `APP_DEV_VERSION` must either match `APP_VERSION` or be `x.y.z.w`
- # - GitHub Actions must have write permission to push to `dev`
- # - This workflow only runs when the repository owner is `nightscout`
- # -----------------------------------------------------------------------------
- name: zzz [DO NOT RUN] Bump APP_DEV_VERSION on dev push
- on:
- push:
- branches:
- - dev
- jobs:
- bump-dev-version:
- if: github.repository_owner == 'nightscout'
- runs-on: ubuntu-latest
- steps:
- - name: Checkout repo
- uses: actions/checkout@v4
- with:
- token: ${{ secrets.TRIO_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 APP_DEV_VERSION
- run: |
- FILE=Config.xcconfig
- # Read current APP_VERSION
- BASE_VERSION=$(grep '^APP_VERSION' "$FILE" | cut -d '=' -f2 | xargs)
- # Read existing APP_DEV_VERSION, if any
- DEV_LINE=$(grep '^APP_DEV_VERSION' "$FILE" || echo "")
- if [ -z "$DEV_LINE" ]; then
- CURRENT_DEV_VERSION="$BASE_VERSION"
- else
- CURRENT_DEV_VERSION=$(echo "$DEV_LINE" | cut -d '=' -f2 | xargs)
- fi
- echo "APP_VERSION = $BASE_VERSION"
- echo "APP_DEV_VERSION = $CURRENT_DEV_VERSION"
- # Decide next dev version
- if [ "$CURRENT_DEV_VERSION" = "$BASE_VERSION" ]; then
- # First post-release commit to dev → bump to .1
- NEW_DEV_VERSION="${BASE_VERSION}.1"
- if [ -z "$DEV_LINE" ]; then
- echo "APP_DEV_VERSION = $NEW_DEV_VERSION" >> "$FILE"
- else
- sed -i -E "s|^APP_DEV_VERSION *= *.*|APP_DEV_VERSION = $NEW_DEV_VERSION|" "$FILE"
- fi
- else
- # Already in .X form → bump last digit
- IFS='.' read -r MAJOR MINOR PATCH FEATURE <<< "$CURRENT_DEV_VERSION"
- FEATURE=$((FEATURE + 1))
- NEW_DEV_VERSION="$MAJOR.$MINOR.$PATCH.$FEATURE"
- sed -i -E "s|^APP_DEV_VERSION *= *.*|APP_DEV_VERSION = $NEW_DEV_VERSION|" "$FILE"
- fi
- echo "NEW APP_DEV_VERSION = $NEW_DEV_VERSION"
- echo "NEW_DEV_VERSION=$NEW_DEV_VERSION" >> $GITHUB_ENV
- - name: Commit and push updated dev version
- run: |
- git add Config.xcconfig
- git commit -m "CI: Bump APP_DEV_VERSION to $NEW_DEV_VERSION [skip ci]"
- git push
|