Skip to content

Commit

Permalink
[iOS] iOS CI ๊ตฌ์ถ• (#121)
Browse files Browse the repository at this point in the history
* ๐Ÿ‘ท Xcode ๋นŒ๋“œ & ํ…Œ์ŠคํŠธ CI ๊ตฌ์ถ•

* ๐Ÿ‘ท runner ๋ฒ„์ „ ์ˆ˜์ •

* ๐Ÿ‘ท ๊ฐ ํŒจํ‚ค์ง€ ๋ณ„ CI ์ถ”๊ฐ€

* ๐Ÿ‘ท iOS ๊ฒฝ๋กœ ์ˆ˜์ •

* ๐Ÿ‘ท set-output ๋Œ€์‹  Environment File ์‚ฌ์šฉ

* ๐Ÿ‘ท Test destination ์ˆ˜์ •

* ๐Ÿ‘ท Xcode ๋ฒ„์ „ ๋ช…์‹œ

* ๐Ÿ‘ท Test ํƒ€๊ฒŸ CI ์ˆ˜์ •

* ๐Ÿ‘ท ์ค‘๋ณต๋œ Test Action ์ œ๊ฑฐ

* ๐Ÿ‘ท MSUIKit ํ…Œ์ŠคํŠธ ํƒ€๊ฒŸ ์ถ”๊ฐ€

* ๐Ÿ‘ท Swift 5.9 ์‚ฌ์šฉ

* ๐Ÿ‘ท Build ๊ณผ์ •์—์„œ Tests Scheme  ์ œ์™ธ
  • Loading branch information
SwiftyJunnos authored Nov 26, 2023
1 parent f3acdf8 commit 19240ea
Show file tree
Hide file tree
Showing 18 changed files with 590 additions and 172 deletions.
128 changes: 128 additions & 0 deletions .github/workflows/Xcode_build_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
name: Xcode_build_test

env:
PACKAGES_JSON: '["MSCoreKit", "MSFoundation", "MSUIKit"]'

on:
pull_request:
branches:
- 'iOS/release'
- 'iOS/epic/**'
types: [assigned, labeled, opened, synchronize, reopened]

jobs:
prepare-matrix:
runs-on: macos-13
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- uses: actions/checkout@v4

- name: Setup Xcode
if: ${{ !env.ACT }}
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '15.0.1'

- name: Install jq
run: brew install jq

- name: Generate matrix
id: set-matrix
run: |
cd iOS
matrix="{\"include\":["
packages=$(echo $PACKAGES_JSON | jq -r '.[]')
first_entry=true
for package in $packages; do
cd $package
for scheme in $(xcodebuild -list | grep -E '^[[:space:]]*Schemes:' -A 10 | tail -n +2 | grep -v '^$'); do
if [[ $scheme != *"-Package" ]] && [[ $scheme != *"Tests" ]]; then
if [ "$first_entry" = true ]; then
first_entry=false
else
matrix+=","
fi
matrix+="{\"package\":\"$package\", \"scheme\":\"$scheme\"}"
fi
done
cd ..
done
# cd Features
# for package in JourneyList SaveJourney; do
# cd $package
# for scheme in $(xcodebuild -list | grep -E '^[[:space:]]*Schemes:' -A 10 | tail -n +2 | grep -v '^$'); do
# if [[ $scheme != *"-Package" ]]; then
# if [ "$first_entry" = true ]; then
# first_entry=false
# else
# matrix+=","
# fi
# matrix+="{\"package\":\"$package\", \"scheme\":\"$scheme\"}"
# fi
# done
# cd ..
# done
matrix+="]}"
echo "matrix=$matrix" >> $GITHUB_OUTPUT
xcode-build:
needs: prepare-matrix
runs-on: macos-13
strategy:
fail-fast: false
matrix: ${{fromJson(needs.prepare-matrix.outputs.matrix)}}
steps:
- uses: actions/checkout@v4

- name: Setup Xcode
if: ${{ !env.ACT }}
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '15.0.1'

- name: ๐Ÿ› ๏ธ Build ${{ matrix.scheme }}
if: ${{ !contains(matrix.scheme, 'Tests') }}
run: |
echo "๐Ÿ› ๏ธ Building ${{ matrix.package }} - Scheme: ${{ matrix.scheme }}"
cd iOS/${{ matrix.package }}
xcodebuild \
-scheme ${{ matrix.scheme }} \
-sdk 'iphonesimulator' \
-destination 'platform=iOS Simulator,OS=17.0.1,name=iPhone 15 Pro' \
clean build
prepare-test-matrix:
runs-on: macos-13
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- id: set-matrix
run: |
matrix="{\"package\": $PACKAGES_JSON}"
echo "matrix=$matrix" >> $GITHUB_OUTPUT
xcode-test:
needs: prepare-test-matrix
runs-on: macos-13
strategy:
fail-fast: false
matrix: ${{fromJson(needs.prepare-test-matrix.outputs.matrix)}}
steps:
- uses: actions/checkout@v4

- name: Setup Xcode
if: ${{ !env.ACT }}
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '15.0.1'

- name: ๐Ÿงช Test ${{ matrix.package }}
run: |
echo "๐Ÿงช Testing ${{ matrix.package }}"
cd iOS/${{ matrix.package }}
xcodebuild \
-scheme ${{ matrix.package }}-Package \
-sdk 'iphonesimulator' \
-destination 'platform=iOS Simulator,OS=17.0.1,name=iPhone 15 Pro' \
clean test

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1500"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "MSCacheStorage"
BuildableName = "MSCacheStorage"
BlueprintName = "MSCacheStorage"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "MSCacheStorage"
BuildableName = "MSCacheStorage"
BlueprintName = "MSCacheStorage"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1500"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "MSCacheStorageTests"
BuildableName = "MSCacheStorageTests"
BlueprintName = "MSCacheStorageTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "MSFoundation"
BuildableName = "MSFoundation"
BlueprintName = "MSFoundation"
BlueprintIdentifier = "MSFetcher"
BuildableName = "MSFetcher"
BlueprintName = "MSFetcher"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
Expand Down Expand Up @@ -49,9 +49,9 @@
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "MSFoundation"
BuildableName = "MSFoundation"
BlueprintName = "MSFoundation"
BlueprintIdentifier = "MSFetcher"
BuildableName = "MSFetcher"
BlueprintName = "MSFetcher"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1500"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "MSFetcherTests"
BuildableName = "MSFetcherTests"
BlueprintName = "MSFetcherTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
Loading

0 comments on commit 19240ea

Please sign in to comment.