Observable State for WorkflowSwiftUI #883
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Swift CI | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
env: | |
XCODE_VERSION: 15.1 | |
IOS_DESTINATION: platform=iOS Simulator,OS=17.2,name=iPad (10th generation) | |
jobs: | |
development-apps: | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
scheme: | |
- Development-Unit-WorkflowTesting | |
- Development-Unit-WorkflowTests | |
- Development-Unit-WorkflowUITests | |
- Development-Unit-SplitScreenTests | |
- Development-Unit-TicTacToeTests | |
- Development-Unit-WorkflowReactiveSwiftTests | |
- Development-Unit-WorkflowRxSwiftTests | |
- Development-Unit-WorkflowReactiveSwiftTestingTests | |
- Development-Unit-WorkflowRxSwiftTestingTests | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
# Uses version specified in .ruby_version | |
bundler-cache: true # runs 'bundle install' and caches installed gems automatically | |
- name: Pod Install | |
run: | | |
bundle exec pod gen Development.podspec | |
- name: Switch Xcode | |
run: sudo xcode-select -s /Applications/Xcode_${XCODE_VERSION}.app | |
- name: Build & Test | |
run: | | |
set -o pipefail | |
xcodebuild \ | |
-workspace gen/Development/Development.xcworkspace \ | |
-scheme ${{ matrix.scheme }} \ | |
-destination "$IOS_DESTINATION" \ | |
build test | bundle exec xcpretty | |
xcodegen-apps: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Switch Xcode | |
run: sudo xcode-select -s /Applications/Xcode_${XCODE_VERSION}.app | |
- name: Install XcodeGen | |
run: brew install xcodegen | |
- name: Generate Xcode project | |
run: xcodegen generate | |
- name: ObservableScreen | |
run: | | |
xcodebuild \ | |
-project Workflow.xcodeproj \ | |
-scheme "ObservableScreen" \ | |
-destination "$IOS_DESTINATION" \ | |
-skipMacroValidation \ | |
build | |
package-tests: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Switch Xcode | |
run: sudo xcode-select -s /Applications/Xcode_${XCODE_VERSION}.app | |
- name: Find test schemes | |
run: | | |
set -o pipefail | |
echo Dumping package information | |
swift package describe --type json > package.json | |
echo Extracting test schemes | |
cat package.json | jq -r '.targets[] | select(.type == "test") | .name' > test_schemes.txt | |
echo loading vars | |
ALL_TEST_SCHEMES=$(cat test_schemes.txt) | |
echo loading ios | |
echo $ALL_TEST_SCHEMES | grep -v "Macro" | |
echo now into the var | |
IOS_TEST_SCHEMES=$(cat test_schemes.txt | grep -v Macro) | |
echo done | |
# Macros are only built for the compiler platform, so we cannot run macro tests on iOS. | |
- name: Tests - iOS | |
run: | | |
for TEST_SCHEME in $IOS_TEST_SCHEMES; do | |
xcodebuild \ | |
-scheme $TEST_SCHEME \ | |
-destination "$IOS_DESTINATION" \ | |
-skipMacroValidation \ | |
test | |
done | |
# On macOS we can run all tests, including macro tests. | |
- name: Tests - macOS | |
run: | | |
for TEST_SCHEME in $ALL_TEST_SCHEMES; do | |
xcodebuild \ | |
-scheme $TEST_SCHEME \ | |
-destination "platform=macOS" \ | |
-skipMacroValidation \ | |
test | |
done | |
tutorial: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
# Uses version specified in .ruby_version | |
bundler-cache: true # runs 'bundle install' and caches installed gems automatically | |
- name: Switch Xcode | |
run: sudo xcode-select -s /Applications/Xcode_${XCODE_VERSION}.app | |
- name: Tutorial App | |
run: | | |
cd Samples/Tutorial | |
bundle exec pod install | |
set -o pipefail | |
xcodebuild \ | |
-workspace Tutorial.xcworkspace \ | |
-scheme Tutorial \ | |
-destination "$IOS_DESTINATION" \ | |
build test | bundle exec xcpretty | |
documentation-lint: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
# Uses version specified in .ruby_version | |
bundler-cache: true # runs 'bundle install' and caches installed gems automatically | |
- name: Switch Xcode | |
run: sudo xcode-select -s /Applications/Xcode_${XCODE_VERSION}.app | |
- name: Install sourcedocs | |
run: brew install sourcedocs | |
- name: Swiftdocs | |
run: | | |
.buildscript/build_swift_docs.sh ${{ runner.temp }}/swiftdocs |