1
1
name : Build
2
-
3
- on : [push]
4
-
2
+ on :
3
+ - push
5
4
jobs :
6
- build :
7
- name : Build
8
- runs-on : macos-latest
5
+ find_schemes :
6
+ name : Find xcode schemes
7
+ runs-on : macos-14
8
+ outputs :
9
+ schemes : ${{ steps.getSchemes.outputs.schemes}}
9
10
steps :
10
11
- name : Checkout
11
- uses : actions/checkout@v3
12
+ uses : actions/checkout@v4
13
+ - name : xcode version
14
+ uses : maxim-lobanov/setup-xcode@v1
15
+ with :
16
+ xcode-version : latest-stable
17
+ - name : Get schemes
18
+ id : getSchemes
19
+ run : |
20
+ TARGETS=$(xcodebuild -list -json | tr -d "\n")
21
+ SCHEMES=$(echo $TARGETS | ruby -e "require 'json'; puts JSON.generate(:scheme => JSON.parse(STDIN.gets)['project']['schemes'])")
22
+ echo Found schemes: $SCHEMES
23
+ echo "schemes=$SCHEMES" >> $GITHUB_OUTPUT
24
+ swift_build :
25
+ name : Build with swift
26
+ runs-on : macos-14
27
+ steps :
28
+ - name : Checkout
29
+ uses : actions/checkout@v4
12
30
- name : xcode version
13
31
uses : maxim-lobanov/setup-xcode@v1
14
32
with :
15
33
xcode-version : latest-stable
16
34
- name : Build Package with swift
17
35
run : swift build
18
- - name : Set Default Scheme
19
- run : |
20
- scheme_list=$(xcodebuild -list -json | tr -d "\n")
21
- default=$(echo $scheme_list | ruby -e "require 'json'; puts JSON.parse(STDIN.gets)['workspace']['schemes'][0]")
22
- echo $default | cat >default
23
- echo Using default scheme: $default
24
- - name : Build Package with xcodebuild
25
- env :
26
- scheme : ${{ 'default' }}
27
- run : |
28
- if [ $scheme = default ]; then scheme=$(cat default); fi
29
- xcodebuild -scheme $scheme -destination 'platform=iOS Simulator,name=iPhone 13'
36
+ xcode_build :
37
+ name : Build with xcode
38
+ needs : find_schemes
39
+ runs-on : macos-14
40
+ strategy :
41
+ matrix : ${{ fromJson(needs.find_schemes.outputs.schemes) }}
42
+ steps :
43
+ - name : Checkout
44
+ uses : actions/checkout@v4
45
+ - name : xcode version
46
+ uses : maxim-lobanov/setup-xcode@v1
47
+ with :
48
+ xcode-version : latest-stable
49
+ - name : Build ${{matrix.scheme}}
50
+ run : xcodebuild clean build -project ApiVideoPlayer.xcodeproj -scheme "${{matrix.scheme}}" -sdk iphoneos CODE_SIGNING_ALLOWED=NO
51
+ verify :
52
+ name : Verify package sanity
53
+ runs-on : macos-14
54
+ steps :
55
+ - name : Checkout
56
+ uses : actions/checkout@v4
57
+ - name : xcode version
58
+ uses : maxim-lobanov/setup-xcode@v1
59
+ with :
60
+ xcode-version : latest-stable
30
61
- name : Verify cocoapods
31
62
run : pod lib lint --allow-warnings
63
+ - name : Install swiftlint
64
+ run : brew install swiftlint
32
65
- name : Execute swiftlint
33
66
run : swiftlint
34
- - name : Build Example UIKit
35
- env :
36
- scheme : ${{ 'default' }}
37
- run : |
38
- if [ $scheme = default ]; then scheme=$(cat default); fi
39
- xcodebuild clean build -project Examples/PlayerUIKit/PlayerUIKit.xcodeproj -scheme $scheme -sdk iphoneos
40
- - name : Build Example SwiftUI
41
- env :
42
- scheme : ${{ 'default' }}
43
- run : |
44
- if [ $scheme = default ]; then scheme=$(cat default); fi
45
- xcodebuild clean build -project Examples/PlayerSwiftUI/PlayerSwiftUI.xcodeproj -scheme $scheme -sdk iphoneos
0 commit comments