2020-04-11 19:19:25 +07:00
name : iOS starter workflow
2020-04-11 19:13:45 +07:00
on :
push :
2020-08-22 14:56:07 +07:00
branches : [ $default-branch ]
2020-04-11 19:13:45 +07:00
pull_request :
2020-08-22 14:56:07 +07:00
branches : [ $default-branch ]
2020-04-11 19:13:45 +07:00
jobs :
build :
name : Build and Test default scheme using any available iPhone simulator
runs-on : macos-latest
steps :
- name : Checkout
uses : actions/checkout@v2
- name : Set Default Scheme
run : |
scheme_list=$(xcodebuild -list -json | tr -d "\n")
default=$(echo $scheme_list | ruby -e "require 'json'; puts JSON.parse(STDIN.gets)['project']['targets'][0]")
echo $default | cat >default
echo Using default scheme: $default
- name : Build
env :
scheme : ${{ 'default' }}
platform : ${{ 'iOS Simulator' }}
run : |
2021-04-23 11:33:14 -07:00
# xcrun xctrace returns via stderr, not the expected stdout (see https://developer.apple.com/forums/thread/663959)
2021-07-26 11:26:46 -04:00
device=`xcrun xctrace list devices 2>&1 | grep -oE 'iPhone.*?[^\(]+' | head -1 | awk '{$1=$1;print}'`
2020-04-11 19:13:45 +07:00
if [ $scheme = default ]; then scheme=$(cat default); fi
if [ "`ls -A | grep -i \\.xcworkspace\$`" ]; then filetype_parameter="workspace" && file_to_build="`ls -A | grep -i \\.xcworkspace\$`"; else filetype_parameter="project" && file_to_build="`ls -A | grep -i \\.xcodeproj\$`"; fi
file_to_build=`echo $file_to_build | awk '{$1=$1;print}'`
xcodebuild build-for-testing -scheme "$scheme" -"$filetype_parameter" "$file_to_build" -destination "platform=$platform,name=$device"
- name : Test
env :
scheme : ${{ 'default' }}
platform : ${{ 'iOS Simulator' }}
run : |
2021-04-23 11:33:14 -07:00
# xcrun xctrace returns via stderr, not the expected stdout (see https://developer.apple.com/forums/thread/663959)
2021-06-14 15:19:02 +03:00
device=`xcrun xctrace list devices 2>&1 | grep -oE 'iPhone.*?[^\(]+' | head -1 | awk '{$1=$1;print}'`
2020-04-11 19:13:45 +07:00
if [ $scheme = default ]; then scheme=$(cat default); fi
if [ "`ls -A | grep -i \\.xcworkspace\$`" ]; then filetype_parameter="workspace" && file_to_build="`ls -A | grep -i \\.xcworkspace\$`"; else filetype_parameter="project" && file_to_build="`ls -A | grep -i \\.xcodeproj\$`"; fi
file_to_build=`echo $file_to_build | awk '{$1=$1;print}'`
xcodebuild test-without-building -scheme "$scheme" -"$filetype_parameter" "$file_to_build" -destination "platform=$platform,name=$device"