diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9d13292..fd0be04 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,6 +1,10 @@ name: CI -on: [push, pull_request] +on: + push: + pull_request: + schedule: + - cron: "0 12 * * 1" # Mondays at 12:00 UTC permissions: {} @@ -19,9 +23,9 @@ jobs: xcode-version: "15.4" destination: "platform=iOS Simulator,name=iPhone 15,OS=17.5" - runner-image: "macos-15" - ios-version: "18.6" + ios-version: "18.5" xcode-version: "16.4" - destination: "platform=iOS Simulator,name=iPhone 16,OS=18.6" + destination: "platform=iOS Simulator,name=iPhone 16,OS=18.5" - runner-image: "macos-26" ios-version: "26.1" xcode-version: "26.3" @@ -40,11 +44,26 @@ jobs: - name: Run Tests run: | - xcodebuild test \ - -scheme MinFraudDevice \ - -destination "${{ matrix.destination }}" \ - -resultBundlePath TestResults-iOS${{ matrix.ios-version }}.xcresult \ - | xcpretty && exit ${PIPESTATUS[0]} + attempts=3 + status=1 + for attempt in $(seq 1 $attempts); do + echo "::group::Test attempt $attempt of $attempts" + rm -rf TestResults-iOS${{ matrix.ios-version }}.xcresult + set +e + xcodebuild test \ + -scheme MinFraudDevice \ + -destination "${{ matrix.destination }}" \ + -resultBundlePath TestResults-iOS${{ matrix.ios-version }}.xcresult \ + | xcpretty + status=${PIPESTATUS[0]} + set -e + echo "::endgroup::" + if [ $status -eq 0 ]; then + exit 0 + fi + echo "Test attempt $attempt failed with exit code $status" + done + exit $status - name: Upload Test Results if: always() @@ -68,9 +87,9 @@ jobs: xcode-version: "15.4" destination: "platform=iOS Simulator,name=iPhone 15,OS=17.5" - runner-image: "macos-15" - ios-version: "18.6" + ios-version: "18.5" xcode-version: "16.4" - destination: "platform=iOS Simulator,name=iPhone 16,OS=18.6" + destination: "platform=iOS Simulator,name=iPhone 16,OS=18.5" - runner-image: "macos-26" ios-version: "26.1" xcode-version: "26.3" @@ -89,11 +108,26 @@ jobs: - name: Build Example App run: | - xcodebuild build \ - -project Example/MinFraudDeviceExample/MinFraudDeviceExample.xcodeproj \ - -scheme MinFraudDeviceExample \ - -destination "${{ matrix.destination }}" \ - | xcpretty && exit ${PIPESTATUS[0]} + attempts=3 + status=1 + for attempt in $(seq 1 $attempts); do + echo "::group::Test attempt $attempt of $attempts" + rm -rf TestResults-iOS${{ matrix.ios-version }}.xcresult + set +e + xcodebuild build \ + -project Example/MinFraudDeviceExample/MinFraudDeviceExample.xcodeproj \ + -scheme MinFraudDeviceExample \ + -destination "${{ matrix.destination }}" \ + | xcpretty && exit ${PIPESTATUS[0]} + status=${PIPESTATUS[0]} + set -e + echo "::endgroup::" + if [ $status -eq 0 ]; then + exit 0 + fi + echo "Test attempt $attempt failed with exit code $status" + done + exit $status lint: name: SwiftLint diff --git a/README.md b/README.md index c3155ea..b75ab10 100644 --- a/README.md +++ b/README.md @@ -137,7 +137,7 @@ xcodebuild build -scheme MinFraudDevice -destination 'generic/platform=iOS Simul ### Testing ```bash -xcodebuild test -scheme MinFraudDevice -destination 'platform=iOS Simulator,name=iPhone 16' +xcodebuild test -scheme MinFraudDevice -destination 'platform=iOS Simulator,name=iPhone 17' ``` ### Code Quality @@ -175,7 +175,7 @@ Build it with: xcodebuild build \ -project Example/MinFraudDeviceExample/MinFraudDeviceExample.xcodeproj \ -scheme MinFraudDeviceExample \ - -destination 'platform=iOS Simulator,name=iPhone 16' + -destination 'platform=iOS Simulator,name=iPhone 17' ``` ## Contributing