Ver Fonte

[github-action] Change the github action to split unit test into 4 jobs and run in parallel

DreamPiggy há 2 anos atrás
pai
commit
d26ed45dd0
1 ficheiros alterados com 21 adições e 31 exclusões
  1. 21 31
      .github/workflows/CI.yml

+ 21 - 31
.github/workflows/CI.yml

@@ -99,12 +99,23 @@ jobs:
       DEVELOPER_DIR: /Applications/Xcode_15.2.app
       WORKSPACE_NAME: SDWebImage.xcworkspace
       CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
-      iosDestination: platform=iOS Simulator,name=iPhone 15 Pro
-      macOSDestination: platform=macOS,arch=x86_64
-      macCatalystDestination: platform=macOS,arch=x86_64,variant=Mac Catalyst
-      tvOSDestination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation)
-      watchOSDestination: platform=watchOS Simulator,name=Apple Watch Series 9 (45mm)
-      visionOSDestination: platform=visionOS Simulator,name=Apple Vision Pro
+    # use matrix to generate jobs for each platform
+    strategy:
+      matrix:
+        platform: [iOS, macOS, tvOS, visionOS]
+        include:
+          - platform: iOS
+            destination: platform=iOS Simulator,name=iPhone 15 Pro
+            scheme: iOS
+          - platform: macOS
+            destination: platform=macOS,arch=x86_64
+            scheme: Mac
+          - platform: tvOS
+            destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation)
+            scheme: TV
+          - platform: visionOS
+            destination: platform=visionOS Simulator,name=Apple Vision Pro
+            scheme: Vision
     steps:
       - name: Checkout
         uses: actions/checkout@v3
@@ -126,39 +137,18 @@ jobs:
           rm -rf ~/Library/Developer/Xcode/DerivedData/
           mkdir DerivedData
         
-      - name: Test for iOS
-        run: |
-          set -o pipefail
-          xcodebuild test -workspace "${{ env.WORKSPACE_NAME }}" -scheme "Tests iOS" -destination "${{ env.iosDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO
-          mv ~/Library/Developer/Xcode/DerivedData/ ./DerivedData/iOS
-          
-      - name: Test for macOS
-        run: |
-          set -o pipefail
-          xcodebuild test -workspace "${{ env.WORKSPACE_NAME }}" -scheme "Tests Mac" -destination "${{ env.macOSDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO
-          mv ~/Library/Developer/Xcode/DerivedData/ ./DerivedData/macOS
-    
-      - name: Test for tvOS
-        run: |
-          set -o pipefail
-          xcodebuild test -workspace "${{ env.WORKSPACE_NAME }}" -scheme "Tests TV" -destination "${{ env.tvOSDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO
-          mv ~/Library/Developer/Xcode/DerivedData/ ./DerivedData/tvOS
-
-      - name: Test for visionOS
+      - name: Run test
         run: |
           set -o pipefail
-          xcodebuild test -workspace "${{ env.WORKSPACE_NAME }}" -scheme "Tests Vision" -destination "${{ env.visionOSDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO
-          mv ~/Library/Developer/Xcode/DerivedData/ ./DerivedData/visionOS
+          xcodebuild test -workspace "${{ env.WORKSPACE_NAME }}" -scheme "Tests ${{ matrix.scheme }}" -destination "${{ matrix.destination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO
+          mv ~/Library/Developer/Xcode/DerivedData/ "./DerivedData/{{ matrix.platform }}"
           
       - name: Code Coverage
         run: |
           set -o pipefail
           export PATH="/usr/local/opt/curl/bin:$PATH"
           curl --version
-          bash <(curl -s https://codecov.io/bash) -v -D './DerivedData/macOS' -J '^SDWebImage$' -c -X gcov -F macos
-          bash <(curl -s https://codecov.io/bash) -v -D './DerivedData/iOS' -J '^SDWebImage$' -c -X gcov -F ios
-          bash <(curl -s https://codecov.io/bash) -v -D './DerivedData/tvOS' -J '^SDWebImage$' -c -X gcov -F tvos
-          bash <(curl -s https://codecov.io/bash) -v -D './DerivedData/visionOS' -J '^SDWebImage$' -c -X gcov -F visionos
+          bash <(curl -s https://codecov.io/bash) -v -D "./DerivedData/{{ matrix.platform }}" -J '^SDWebImage$' -c -X gcov -F "{{ matrix.platform }}"
           
   Build:
     name: Build Library