From fdbe0741b3381cad1d3349fc882a7a4397542298 Mon Sep 17 00:00:00 2001 From: Bug Magnet Date: Mon, 5 Feb 2024 11:54:29 +0100 Subject: [PATCH] Validate Staging and MockRelease configurations when ios PRs are merged --- .../workflows/ios-validate-build-schemas.yml | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 .github/workflows/ios-validate-build-schemas.yml diff --git a/.github/workflows/ios-validate-build-schemas.yml b/.github/workflows/ios-validate-build-schemas.yml new file mode 100644 index 000000000000..cd7485a4cc65 --- /dev/null +++ b/.github/workflows/ios-validate-build-schemas.yml @@ -0,0 +1,82 @@ +--- +name: iOS Validate build schemas +on: + pull_request: + types: + - closed + branches: + - main + paths: + - .github/workflows/ios.yml + - .github/workflows/ios-validate-build-schemas.yml + - ios/.swiftformat + - ios/**/*.swift + - ios/**/*.xctestplan + workflow_dispatch: +jobs: + test: + if: github.event.pull_request.merged == true + name: Validate build schemas + runs-on: macos-13-xlarge + env: + SOURCE_PACKAGES_PATH: .spm + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Configure cache + uses: actions/cache@v3 + with: + path: ios/${{ env.SOURCE_PACKAGES_PATH }} + key: ${{ runner.os }}-spm-${{ hashFiles('ios/**/Package.resolved') }} + restore-keys: | + ${{ runner.os }}-spm- + + - name: Setup go-lang + uses: actions/setup-go@v3 + with: + go-version: 1.19.5 + + - name: Set up yeetd to workaround XCode being slow in CI + run: | + wget https://github.com/biscuitehh/yeetd/releases/download/1.0/yeetd-normal.pkg + sudo installer -pkg yeetd-normal.pkg -target / + yeetd & + - name: Configure Xcode + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: '15.0.1' + - name: Configure Rust + run: rustup target add aarch64-apple-ios-sim x86_64-apple-ios + + - name: Configure Xcode project + run: | + cp Base.xcconfig.template Base.xcconfig + cp App.xcconfig.template App.xcconfig + cp PacketTunnel.xcconfig.template PacketTunnel.xcconfig + cp Screenshots.xcconfig.template Screenshots.xcconfig + cp Api.xcconfig.template Api.xcconfig + working-directory: ios/Configurations + + - name: Install xcbeautify + run: | + brew update + brew install xcbeautify + + - name: Run build validation for Staging and MockRelease configurations + run: | + set -o pipefail && env NSUnbufferedIO=YES xcodebuild \ + -project MullvadVPN.xcodeproj \ + -scheme MullvadVPN \ + -configuration MockRelease \ + -destination "platform=iOS Simulator,name=iPhone 15" \ + -clonedSourcePackagesDirPath "$SOURCE_PACKAGES_PATH" \ + build + set -o pipefail && env NSUnbufferedIO=YES xcodebuild \ + -project MullvadVPN.xcodeproj \ + -scheme MullvadVPN \ + -configuration Staging \ + -destination "platform=iOS Simulator,name=iPhone 15" \ + -clonedSourcePackagesDirPath "$SOURCE_PACKAGES_PATH" \ + build + working-directory: ios/