CI.yml 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. name: "SDWebImage CI"
  2. on:
  3. push:
  4. branches:
  5. - master
  6. pull_request:
  7. branches:
  8. - '*'
  9. permissions:
  10. contents: read
  11. jobs:
  12. Pods:
  13. name: Cocoapods Lint
  14. runs-on: macos-11
  15. env:
  16. DEVELOPER_DIR: /Applications/Xcode_13.2.1.app
  17. steps:
  18. - name: Checkout
  19. uses: actions/checkout@v2
  20. - name: Install Cocoapods
  21. run: gem install cocoapods --no-document --quiet
  22. - name: Install Xcpretty
  23. run: gem install xcpretty --no-document --quiet
  24. - name: Pod Update.
  25. run: pod repo update --silent
  26. - name: Pod Install.
  27. run: pod install
  28. - name: Run SDWebImage podspec lint
  29. run: |
  30. set -o pipefail
  31. pod lib lint SDWebImage.podspec --allow-warnings --skip-tests
  32. Demo:
  33. name: Run Demo
  34. runs-on: macos-11
  35. env:
  36. DEVELOPER_DIR: /Applications/Xcode_13.2.1.app
  37. WORKSPACE_NAME: SDWebImage.xcworkspace
  38. OSXSCHEME: SDWebImage OSX Demo
  39. iOSSCHEME: SDWebImage iOS Demo
  40. TVSCHEME: SDWebImage TV Demo
  41. WATCHSCHEME: SDWebImage Watch Demo
  42. strategy:
  43. matrix:
  44. iosDestination: ["name=iPhone 13 Pro"]
  45. tvOSDestination: ["name=Apple TV 4K"]
  46. watchOSDestination: ["platform=watchOS Simulator,name=Apple Watch Series 7 - 45mm"]
  47. macOSDestination: ["platform=macOS"]
  48. macCatalystDestination: ["platform=macOS,arch=x86_64,variant=Mac Catalyst"]
  49. steps:
  50. - name: Checkout
  51. uses: actions/checkout@v2
  52. - name: Install Cocoapods
  53. run: gem install cocoapods --no-document --quiet
  54. - name: Install Xcpretty
  55. run: gem install xcpretty --no-document --quiet
  56. - name: Pod Update
  57. run: pod repo update --silent
  58. - name: Pod Install
  59. run: pod install
  60. - name: Run demo for OSX
  61. run: |
  62. set -o pipefail
  63. xcodebuild build -workspace "${{ env.WORKSPACE_NAME }}" -scheme "${{ env.OSXSCHEME }}" -destination "${{ matrix.macOSDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO | xcpretty -c
  64. - name: Run demo for iOS
  65. run: |
  66. set -o pipefail
  67. xcodebuild build -workspace "${{ env.WORKSPACE_NAME }}" -scheme "${{ env.iOSSCHEME }}" -destination "${{ matrix.iosDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO | xcpretty -c
  68. - name: Run demo for TV
  69. run: |
  70. set -o pipefail
  71. xcodebuild build -workspace "${{ env.WORKSPACE_NAME }}" -scheme "${{ env.TVSCHEME }}" -destination "${{ matrix.tvOSDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO | xcpretty -c
  72. - name: Run demo for Watch
  73. run: |
  74. set -o pipefail
  75. xcodebuild build -workspace "${{ env.WORKSPACE_NAME }}" -scheme "${{ env.WATCHSCHEME }}" -destination "${{ matrix.watchOSDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO | xcpretty -c
  76. Test:
  77. name: Unit Test
  78. runs-on: macos-11
  79. env:
  80. DEVELOPER_DIR: /Applications/Xcode_13.2.1.app
  81. WORKSPACE_NAME: SDWebImage.xcworkspace
  82. strategy:
  83. matrix:
  84. iosDestination: ["platform=iOS Simulator,name=iPhone 13 Pro"]
  85. macOSDestination: ["platform=macOS,arch=x86_64"]
  86. tvOSDestination: ["platform=tvOS Simulator,name=Apple TV 4K"]
  87. steps:
  88. - name: Checkout
  89. uses: actions/checkout@v2
  90. - name: Install Cocoapods
  91. run: gem install cocoapods --no-document --quiet
  92. - name: Install Xcpretty
  93. run: gem install xcpretty --no-document --quiet
  94. - name: Pod Update
  95. run: pod repo update --silent
  96. - name: Pod Install
  97. run: pod install
  98. - name: Clean DerivedData
  99. run: |
  100. rm -rf ~/Library/Developer/Xcode/DerivedData/
  101. mkdir DerivedData
  102. - name: Test - ${{ matrix.iosDestination }}
  103. run: |
  104. set -o pipefail
  105. xcodebuild test -workspace "${{ env.WORKSPACE_NAME }}" -scheme "Tests iOS" -destination "${{ matrix.iosDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO
  106. mv ~/Library/Developer/Xcode/DerivedData/ ./DerivedData/iOS
  107. - name: Test - ${{ matrix.macOSDestination }}
  108. run: |
  109. set -o pipefail
  110. xcodebuild test -workspace "${{ env.WORKSPACE_NAME }}" -scheme "Tests Mac" -destination "${{ matrix.macOSDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO
  111. mv ~/Library/Developer/Xcode/DerivedData/ ./DerivedData/macOS
  112. - name: Test - ${{ matrix.tvOSDestination }}
  113. run: |
  114. set -o pipefail
  115. xcodebuild test -workspace "${{ env.WORKSPACE_NAME }}" -scheme "Tests TV" -destination "${{ matrix.tvOSDestination }}" -configuration Debug CODE_SIGNING_ALLOWED=NO
  116. mv ~/Library/Developer/Xcode/DerivedData/ ./DerivedData/tvOS
  117. - name: Code Coverage
  118. run: |
  119. set -o pipefail
  120. export PATH="/usr/local/opt/curl/bin:$PATH"
  121. curl --version
  122. bash <(curl -s https://codecov.io/bash) -D './DerivedData/macOS' -J '^SDWebImage$' -c -X gcov -F macos
  123. bash <(curl -s https://codecov.io/bash) -D './DerivedData/iOS' -J '^SDWebImage$' -c -X gcov -F ios
  124. bash <(curl -s https://codecov.io/bash) -D './DerivedData/tvOS' -J '^SDWebImage$' -c -X gcov -F tvos
  125. Build:
  126. name: Build Library
  127. runs-on: macos-11
  128. env:
  129. DEVELOPER_DIR: /Applications/Xcode_13.2.1.app
  130. PROJECT_NAME: SDWebImage.xcodeproj
  131. SCHEME_NAME: SDWebImage
  132. steps:
  133. - name: Checkout
  134. uses: actions/checkout@v2
  135. - name: Install Cocoapods
  136. run: gem install cocoapods --no-document --quiet
  137. - name: Install Xcpretty
  138. run: gem install xcpretty --no-document --quiet
  139. - name: Pod Update
  140. run: pod repo update --silent
  141. - name: Pod Install
  142. run: pod install
  143. - name: Build the SwiftPM
  144. run: |
  145. set -o pipefail
  146. swift build
  147. rm -rf ~/.build
  148. - name: Build as static library
  149. run: |
  150. set -o pipefail
  151. xcodebuild build -project "${{ env.PROJECT_NAME }}" -scheme "SDWebImage static" -sdk iphonesimulator PLATFORM_NAME=iphonesimulator -configuration Release | xcpretty -c
  152. rm -rf ~/Library/Developer/Xcode/DerivedData/
  153. - name: Build as dynamic frameworks
  154. run: |
  155. set -o pipefail
  156. xcodebuild build -project "${{ env.PROJECT_NAME }}" -scheme "${{ env.SCHEME_NAME }}" -sdk macosx -configuration Release | xcpretty -c
  157. xcodebuild build -project "${{ env.PROJECT_NAME }}" -scheme "${{ env.SCHEME_NAME }}" -sdk iphonesimulator PLATFORM_NAME=iphonesimulator -configuration Release | xcpretty -c
  158. xcodebuild build -project "${{ env.PROJECT_NAME }}" -scheme "${{ env.SCHEME_NAME }}" -sdk appletvsimulator -configuration Release | xcpretty -c
  159. xcodebuild build -project "${{ env.PROJECT_NAME }}" -scheme "${{ env.SCHEME_NAME }}" -sdk watchsimulator -configuration Release | xcpretty -c
  160. xcodebuild build -project "${{ env.PROJECT_NAME }}" -scheme "${{ env.SCHEME_NAME }}" -destination "platform=macOS,arch=x86_64,variant=Mac Catalyst" -configuration Release | xcpretty -c
  161. rm -rf ~/Library/Developer/Xcode/DerivedData/