-
Notifications
You must be signed in to change notification settings - Fork 82
140 lines (138 loc) · 4.98 KB
/
Copy pathios.yml
File metadata and controls
140 lines (138 loc) · 4.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
name: iOS
on:
workflow_call:
inputs:
ref:
required: true
type: string
outputs:
verified-sha:
value: ${{ jobs.ios_test.outputs.sha }}
push:
branches: [main]
paths:
- 'Sources/**'
- 'Tests/**'
- 'Package.swift'
- 'Scripts/CI/**'
- 'Scripts/Tuist/**'
- 'mise*.toml'
- '.github/workflows/ios.yml'
pull_request:
paths:
- 'Sources/**'
- 'Tests/**'
- 'Package.swift'
- 'Scripts/CI/**'
- 'Scripts/Tuist/**'
- 'mise*.toml'
- '.github/workflows/ios.yml'
jobs:
ios_test:
name: Execute tests on iOS
outputs:
sha: ${{ steps.checkout.outputs.commit }}
permissions:
contents: read
id-token: write
strategy:
fail-fast: false
matrix:
xcode-version: ["26.6"]
release: [2024]
ios-version: ["18.5"]
include:
- ios-version: "18.5"
ios-simulator-name: "iPhone 16 Pro"
runs-on:
- xcode-26.6
- ios-simulator-18.5
env:
OPENSWIFTUI_WERROR: 0 # Disable it to avoid enable OAG's werror and hit conflicts
OPENSWIFTUI_OPENATTRIBUTESHIMS_ATTRIBUTEGRAPH: 1
OPENSWIFTUI_COMPATIBILITY_TEST: 0
OPENSWIFTUI_SWIFT_LOG: 0
OPENSWIFTUI_SWIFT_CRYPTO: 0
OPENSWIFTUI_TARGET_RELEASE: ${{ matrix.release }}
OPENSWIFTUI_SUPPORT_MULTI_PRODUCTS: 0
OPENSWIFTUI_USE_LOCAL_DEPS: 1
OPENSWIFTUI_LINK_TESTING: 1
# Match Xcode's test launcher so OSLogStore can read current-process debug messages.
OS_ACTIVITY_DT_MODE: "YES"
GH_TOKEN: ${{ github.token }}
steps:
- uses: actions/checkout@v4
id: checkout
with:
ref: ${{ inputs.ref || github.sha }}
- name: Setup Xcode
uses: OpenSwiftUIProject/setup-xcode@v2
with:
xcode-version: ${{ matrix.xcode-version }}
- name: Set up mise
uses: jdx/mise-action@v2
with:
install: false
cache: false
- name: Set up Tuist
run: |
source Scripts/Tuist/common.sh
tuist_ci_setup
shell: bash
- name: Set up build environment
run: Scripts/CI/darwin_setup_build.sh
shell: bash
- name: Install xcbeautify
run: brew install xcbeautify
- name: Prepare isolated DerivedData
shell: bash
run: |
derived_data_path="${RUNNER_TEMP:-/tmp}/ios-derived-data-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT:-0}-${{ matrix.ios-version }}-${{ matrix.release }}"
build_result_bundle_path="${RUNNER_TEMP:-/tmp}/ios-build-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT:-0}-${{ matrix.ios-version }}-${{ matrix.release }}.xcresult"
test_result_bundle_path="${RUNNER_TEMP:-/tmp}/ios-test-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT:-0}-${{ matrix.ios-version }}-${{ matrix.release }}.xcresult"
rm -rf "$derived_data_path"
mkdir -p "$derived_data_path"
{
echo "DERIVED_DATA_PATH=$derived_data_path"
echo "BUILD_RESULT_BUNDLE_PATH=$build_result_bundle_path"
echo "TEST_RESULT_BUNDLE_PATH=$test_result_bundle_path"
} >> "$GITHUB_ENV"
- name: Build test target in debug mode
run: |
set -o pipefail
source Scripts/Tuist/common.sh
# Xcode 26.6 can otherwise link the host macro object into the iOS Simulator test bundle.
NSUnbufferedIO=YES tuist_xcodebuild "$BUILD_RESULT_BUNDLE_PATH" build -IDEPackageEnablePrebuilts=NO \
-scheme OpenSwiftUI \
-configuration Debug \
-destination "platform=iOS Simulator,OS=${{ matrix.ios-version }},name=${{ matrix.ios-simulator-name }}" \
-derivedDataPath "$DERIVED_DATA_PATH" \
-skipMacroValidation \
-skipPackagePluginValidation \
2>&1 | xcbeautify --renderer github-actions --preserve-unbeautified
- name: Run test target in debug mode
run: |
set -o pipefail
source Scripts/Tuist/common.sh
# Match the package prebuilt setting used by the build step.
NSUnbufferedIO=YES tuist_xcodebuild "$TEST_RESULT_BUNDLE_PATH" test -IDEPackageEnablePrebuilts=NO \
-scheme OpenSwiftUI \
-configuration Debug \
-destination "platform=iOS Simulator,OS=${{ matrix.ios-version }},name=${{ matrix.ios-simulator-name }}" \
-derivedDataPath "$DERIVED_DATA_PATH" \
-skipMacroValidation \
-skipPackagePluginValidation \
2>&1 | xcbeautify --renderer github-actions --preserve-unbeautified
- name: Clean up isolated DerivedData
if: always()
shell: bash
run: |
if [[ -n "${DERIVED_DATA_PATH:-}" ]]; then
rm -rf "$DERIVED_DATA_PATH"
fi
if [[ -n "${BUILD_RESULT_BUNDLE_PATH:-}" ]]; then
rm -rf "$BUILD_RESULT_BUNDLE_PATH"
fi
if [[ -n "${TEST_RESULT_BUNDLE_PATH:-}" ]]; then
rm -rf "$TEST_RESULT_BUNDLE_PATH"
fi