我需要使用 Pod 构建一个 Xcode 项目,运行测试,如果测试失败 => 工作流程失败。如果测试通过=>将报告上传到Codecov。
目前,无论测试通过或失败,工作流程都会被标记为成功通过。
这是我的工作流程:
name: Test
on:
pull_request:
branches:
- debug
jobs:
xcode-tests:
name: "Select OS"
runs-on: macos-14-xlarge
steps:
- name: Checkout
uses: actions/checkout@master
- name: Select Xcode
run: sudo xcode-select -switch /Applications/Xcode_15.2.app && /usr/bin/xcodebuild -version
- name: Cache Cocoapods
id: cache-cocoapods
uses: actions/cache@v2
with:
path: Pods
key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }}
restore-keys: |
${{ runner.os }}-pods-
- name: Install Cocoapods
run: pod install --repo-update
- name: Build and Test
env:
scheme: ${{ 'ExampleApp' }}
platform: ${{ 'iOS Simulator' }}
device: ${{ 'iPhone 15' }}
os_version: ${{ '17.4' }}
run: xcodebuild test -workspace ExampleApp.xcworkspace -scheme ExampleApp -destination "platform=$platform,name=$device,OS=$os_version" -enableCodeCoverage YES build test | xcpretty --test
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
实现这一目标的最简单方法是
set -o pipefail
如果管道中的任何命令失败 - 整个管道都会失败 - 不仅仅是最后一个命令。
set -o pipefail && xcodebuild ... | xcpretty --test