diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 37e30ec4..ab2444c9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,8 +10,6 @@ name: ci # The T3 content tier asserts Pokemon Red facts; scripts/test.sh detects # data/generated/ is absent and skips it rather than failing. # -# Runs alongside release.yml, which is untouched by this file. - on: push: # Integration branch + release branch. PRs already run via pull_request @@ -25,6 +23,42 @@ concurrency: cancel-in-progress: true jobs: + ios-changes: + name: detect iOS changes + runs-on: ubuntu-latest + outputs: + changed: ${{ steps.paths.outputs.changed }} + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - id: paths + env: + BASE_SHA: ${{ github.event.pull_request.base.sha || github.event.before }} + HEAD_SHA: ${{ github.sha }} + run: | + if [ -z "$BASE_SHA" ] || [ "$BASE_SHA" = "0000000000000000000000000000000000000000" ]; then + echo "changed=true" >> "$GITHUB_OUTPUT" + exit 0 + fi + if git diff --name-only "$BASE_SHA" "$HEAD_SHA" | grep -Eq '^(mobile/ios/|scripts/build_ios\.sh$|\.github/workflows/(ci|release)\.yml$)'; then + echo "changed=true" >> "$GITHUB_OUTPUT" + else + echo "changed=false" >> "$GITHUB_OUTPUT" + fi + + ios-build: + name: iOS build + needs: ios-changes + if: needs.ios-changes.outputs.changed == 'true' + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - name: install xcbeautify + run: brew list xcbeautify >/dev/null 2>&1 || brew install xcbeautify + - name: build iOS simulator app + run: scripts/build_ios.sh --fetch --release + headless: name: headless suites (no ROM) runs-on: ubuntu-latest