diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml new file mode 100644 index 0000000..3eebc29 --- /dev/null +++ b/.github/workflows/build-and-test.yml @@ -0,0 +1,52 @@ +name: Build and test + +on: + pull_request: + branches: [ "develop", "develop_1.x", "main", "main_1.x" ] + +jobs: + define-ios-device: + name: Get iOS simulator device to run iOS tests on + runs-on: macos-latest + outputs: + device: ${{ steps.ios.outputs.device }} + steps: + - id: ios + run: echo "device=`xcrun xctrace list devices 2>&1 | grep -oE 'iPhone.*?[^\(]+' | head -1 | awk '{$1=$1;print}' | sed -e "s/ Simulator$//"`" >> "$GITHUB_OUTPUT" + + build: + name: Build and Test mamba and mambaTVOS + runs-on: macos-latest + needs: define-ios-device + strategy: + matrix: + target: + - scheme: mamba + platform: iOS Simulator + device: ${{ needs.define-ios-device.outputs.device }} + - scheme: mambaTVOS + platform: tvOS Simulator + device: Apple TV + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Build + env: + scheme: ${{ matrix.target.scheme }} + platform: ${{ matrix.target.platform }} + device: ${{ matrix.target.device }} + run: | + echo "scheme = $scheme" + echo "platform = $platform" + echo "device = $device" + xcodebuild build-for-testing -scheme "$scheme" -"workspace" "mamba.xcworkspace" -destination "platform=$platform,name=$device" + - name: Test + env: + scheme: ${{ matrix.target.scheme }} + platform: ${{ matrix.target.platform }} + device: ${{ matrix.target.device }} + run: | + echo "scheme = $scheme" + echo "platform = $platform" + echo "device = $device" + xcodebuild test-without-building -scheme "$scheme" -"workspace" "mamba.xcworkspace" -destination "platform=$platform,name=$device"