ci.yml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. name: "Alamofire CI"
  2. on:
  3. push:
  4. branches:
  5. - master
  6. - hotfix
  7. paths:
  8. - ".github/workflows/**"
  9. - "Package.swift"
  10. - "Source/**"
  11. - "Tests/**"
  12. pull_request:
  13. paths:
  14. - ".github/workflows/**"
  15. - "Package.swift"
  16. - "Source/**"
  17. - "Tests/**"
  18. concurrency:
  19. group: ${{ github.ref_name }}
  20. cancel-in-progress: true
  21. jobs:
  22. macOS:
  23. name: Test macOS, All Xcodes and Swifts
  24. runs-on: ${{ matrix.runsOn }}
  25. env:
  26. DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}/Contents/Developer"
  27. timeout-minutes: 10
  28. strategy:
  29. fail-fast: false
  30. matrix:
  31. include:
  32. - xcode: "Xcode_14.1.app"
  33. runsOn: macOS-12
  34. name: "macOS 12, Xcode 14.1, Swift 5.7.1"
  35. testPlan: "macOS"
  36. - xcode: "Xcode_14.0.1.app"
  37. runsOn: macOS-12
  38. name: "macOS 12, Xcode 14.0.1, Swift 5.7.0"
  39. testPlan: "macOS"
  40. - xcode: "Xcode_13.4.1.app"
  41. runsOn: macOS-12
  42. name: "macOS 12, Xcode 13.4.1, Swift 5.6.1"
  43. testPlan: "macOS-NoTS"
  44. - xcode: "Xcode_13.3.1.app"
  45. runsOn: macOS-12
  46. name: "macOS 12, Xcode 13.3.1, Swift 5.6.0"
  47. testPlan: "macOS-NoTS"
  48. - xcode: "Xcode_13.2.1.app"
  49. runsOn: macOS-11
  50. name: "macOS 11, Xcode 13.2.1, Swift 5.5.2"
  51. testPlan: "macOS-NoTS"
  52. - xcode: "Xcode_13.1.app"
  53. runsOn: macOS-11
  54. name: "macOS 11, Xcode 13.1, Swift 5.5.1"
  55. testPlan: "macOS-NoTS"
  56. - xcode: "Xcode_13.0.app"
  57. runsOn: macOS-11
  58. name: "macOS 11, Xcode 13.0, Swift 5.5.0"
  59. testPlan: "macOS-NoTS"
  60. steps:
  61. - uses: actions/checkout@v3
  62. - name: Install Firewalk
  63. run: "brew install alamofire/alamofire/firewalk && firewalk &"
  64. - name: ${{ matrix.name }}
  65. run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire macOS" -destination "platform=macOS" -testPlan "${{ matrix.testPlan }}" clean test | xcpretty
  66. Catalyst:
  67. name: Test Catalyst
  68. runs-on: macOS-12
  69. env:
  70. DEVELOPER_DIR: /Applications/Xcode_14.1.app/Contents/Developer
  71. timeout-minutes: 10
  72. steps:
  73. - uses: actions/checkout@v3
  74. - name: Install Firewalk
  75. run: brew install alamofire/alamofire/firewalk && firewalk &
  76. - name: Catalyst
  77. run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire iOS" -destination "platform=macOS" clean test | xcpretty
  78. Latest:
  79. name: Test Latest (iOS, tvOS, watchOS)
  80. runs-on: macOS-12
  81. env:
  82. DEVELOPER_DIR: "/Applications/Xcode_14.1.app/Contents/Developer"
  83. timeout-minutes: 10
  84. strategy:
  85. fail-fast: false
  86. matrix:
  87. include:
  88. - destination: "OS=16.1,name=iPhone 14 Pro"
  89. name: "iOS"
  90. scheme: "Alamofire iOS"
  91. - destination: "OS=16.1,name=Apple TV"
  92. name: "tvOS"
  93. scheme: "Alamofire tvOS"
  94. - destination: "OS=9.1,name=Apple Watch Series 8 (45mm)"
  95. name: "watchOS"
  96. scheme: "Alamofire watchOS"
  97. steps:
  98. - uses: actions/checkout@v3
  99. - name: Install Firewalk
  100. run: brew install alamofire/alamofire/firewalk && firewalk &
  101. - name: ${{ matrix.name }}
  102. run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "${{ matrix.scheme }}" -destination "${{ matrix.destination }}" clean test | xcpretty
  103. iOS:
  104. name: "Test Old iOS"
  105. runs-on: firebreak
  106. env:
  107. DEVELOPER_DIR: "/Applications/Xcode_14.1.app/Contents/Developer"
  108. timeout-minutes: 10
  109. strategy:
  110. fail-fast: false
  111. matrix:
  112. include:
  113. - destination: "OS=15.5,name=iPhone 13 Pro"
  114. name: "iOS 15.5"
  115. testPlan: "iOS-NoTS"
  116. - destination: "OS=14.5,name=iPhone 12 Pro"
  117. name: "iOS 14.5"
  118. testPlan: "iOS-NoTS"
  119. - destination: "OS=13.7,name=iPhone 11 Pro"
  120. name: "iOS 13.7"
  121. testPlan: "iOS-NoTS"
  122. - destination: "OS=12.4,name=iPhone Xs"
  123. name: "iOS 12.4"
  124. testPlan: "iOS-Old"
  125. steps:
  126. - uses: actions/checkout@v3
  127. - name: Install Firewalk
  128. run: brew install alamofire/alamofire/firewalk || brew upgrade alamofire/alamofire/firewalk && firewalk &
  129. - name: ${{ matrix.name }}
  130. run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire iOS" -destination "${{ matrix.destination }}" -testPlan "${{ matrix.testPlan }}" clean test | xcpretty
  131. tvOS:
  132. name: Test Old tvOS
  133. runs-on: firebreak
  134. env:
  135. DEVELOPER_DIR: /Applications/Xcode_14.1.app/Contents/Developer
  136. timeout-minutes: 10
  137. strategy:
  138. fail-fast: false
  139. matrix:
  140. include:
  141. - destination: "OS=15.4,name=Apple TV"
  142. name: "tvOS 15.4"
  143. testPlan: "tvOS-NoTS"
  144. - destination: "OS=14.5,name=Apple TV"
  145. name: "tvOS 14.5"
  146. testPlan: "tvOS-NoTS"
  147. - destination: "OS=13.4,name=Apple TV"
  148. name: "tvOS 13.4"
  149. testPlan: "tvOS-NoTS"
  150. - destination: "OS=12.4,name=Apple TV"
  151. name: "tvOS 12.4"
  152. testPlan: "tvOS-Old"
  153. steps:
  154. - uses: actions/checkout@v3
  155. - name: Install Firewalk
  156. run: brew install alamofire/alamofire/firewalk || brew upgrade alamofire/alamofire/firewalk && firewalk &
  157. - name: ${{ matrix.name }}
  158. run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire tvOS" -destination "${{ matrix.destination }}" -testPlan "${{ matrix.testPlan }}" clean test | xcpretty
  159. watchOS:
  160. name: Test Old watchOS
  161. runs-on: firebreak
  162. env:
  163. DEVELOPER_DIR: /Applications/Xcode_14.1.app/Contents/Developer
  164. timeout-minutes: 10
  165. strategy:
  166. fail-fast: false
  167. matrix:
  168. include:
  169. - destination: "OS=8.5,name=Apple Watch Series 7 (45mm)"
  170. name: "watchOS 8.5"
  171. testPlan: "watchOS-NoTS"
  172. - destination: "OS=7.4,name=Apple Watch Series 6 (44mm)"
  173. name: "watchOS 7.4"
  174. testPlan: "watchOS-NoTS"
  175. steps:
  176. - uses: actions/checkout@v3
  177. - name: Install Firewalk
  178. run: brew install alamofire/alamofire/firewalk && firewalk &
  179. - name: ${{ matrix.name}}
  180. run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire watchOS" -destination "${{ matrix.destination }}" -testPlan "${{ matrix.testPlan }}" clean test | xcpretty
  181. SPM:
  182. name: Test with SPM
  183. runs-on: ${{ matrix.runsOn }}
  184. env:
  185. DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}/Contents/Developer"
  186. timeout-minutes: 10
  187. strategy:
  188. fail-fast: false
  189. matrix:
  190. include:
  191. - xcode: "Xcode_14.1.app"
  192. runsOn: macOS-12
  193. name: "macOS 12, SPM 5.7.1 Test"
  194. - xcode: "Xcode_14.0.1.app"
  195. runsOn: macOS-12
  196. name: "macOS 12, SPM 5.7.0 Test"
  197. - xcode: "Xcode_13.4.1.app"
  198. runsOn: macOS-12
  199. name: "macOS 12, SPM 5.6.1 Test"
  200. - xcode: "Xcode_13.3.1.app"
  201. runsOn: macOS-12
  202. name: "macOS 12, SPM 5.6.0 Test"
  203. - xcode: "Xcode_13.2.1.app"
  204. runsOn: macOS-11
  205. name: "macOS 11, SPM 5.5.2 Test"
  206. - xcode: "Xcode_13.1.app"
  207. runsOn: macOS-11
  208. name: "macOS 11, SPM 5.5.1 Test"
  209. - xcode: "Xcode_13.0.app"
  210. runsOn: macOS-11
  211. name: "macOS 11, SPM 5.5.0 Test"
  212. steps:
  213. - uses: actions/checkout@v3
  214. - name: Install Firewalk
  215. run: brew install alamofire/alamofire/firewalk && firewalk &
  216. - name: Test SPM
  217. run: swift test -c debug
  218. Linux:
  219. name: Linux
  220. runs-on: ubuntu-latest
  221. strategy:
  222. fail-fast: false
  223. matrix:
  224. include:
  225. - image: swift:5.7-bionic
  226. - image: swift:5.7-focal
  227. - image: swift:5.7-centos7
  228. - image: swift:5.7-amazonlinux2
  229. - image: swiftlang/swift:nightly-bionic
  230. - image: swiftlang/swift:nightly-focal
  231. - image: swiftlang/swift:nightly-jammy
  232. # - image: swiftlang/swift:nightly-centos7
  233. - image: swiftlang/swift:nightly-centos8
  234. - image: swiftlang/swift:nightly-amazonlinux2
  235. container:
  236. image: ${{ matrix.image }}
  237. timeout-minutes: 10
  238. steps:
  239. - uses: actions/checkout@v3
  240. - name: ${{ matrix.image }}
  241. run: swift build --build-tests -c debug
  242. Windows:
  243. name: Windows
  244. runs-on: windows-2019
  245. timeout-minutes: 10
  246. steps:
  247. - name: "Clone Project"
  248. uses: actions/checkout@v3
  249. - uses: seanmiddleditch/gha-setup-vsdevenv@master
  250. - name: Install Swift
  251. run: |
  252. Install-Binary -Url "https://download.swift.org/swift-5.6-release/windows10/swift-5.6-RELEASE/swift-5.6-RELEASE-windows10.exe" -Name "installer.exe" -ArgumentList ("-q")
  253. - name: Set Environment Variables
  254. run: |
  255. echo "SDKROOT=C:\Library\Developer\Platforms\Windows.platform\Developer\SDKs\Windows.sdk" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
  256. echo "DEVELOPER_DIR=C:\Library\Developer" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
  257. - name: Adjust Paths
  258. run: |
  259. echo "C:\Library\Swift-development\bin;C:\Library\icu-67\usr\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
  260. echo "C:\Library\Developer\Toolchains\unknown-Asserts-development.xctoolchain\usr\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
  261. - name: Install Supporting Files
  262. run: |
  263. Copy-Item "$env:SDKROOT\usr\share\ucrt.modulemap" -destination "$env:UniversalCRTSdkDir\Include\$env:UCRTVersion\ucrt\module.modulemap"
  264. Copy-Item "$env:SDKROOT\usr\share\visualc.modulemap" -destination "$env:VCToolsInstallDir\include\module.modulemap"
  265. Copy-Item "$env:SDKROOT\usr\share\visualc.apinotes" -destination "$env:VCToolsInstallDir\include\visualc.apinotes"
  266. Copy-Item "$env:SDKROOT\usr\share\winsdk.modulemap" -destination "$env:UniversalCRTSdkDir\Include\$env:UCRTVersion\um\module.modulemap"
  267. - name: SPM Windows build
  268. shell: cmd
  269. run: |
  270. cd ${{ github.workspace}}
  271. set SDKROOT=%SystemDrive%\Library\Developer\Platforms\Windows.platform\Developer\SDKs\Windows.sdk
  272. %SystemDrive%\Library\Developer\Toolchains\unknown-Asserts-development.xctoolchain\usr\bin\swift-build.exe --build-tests -c debug -Xlinker /INCREMENTAL:NO -v
  273. if not exist .build\x86_64-unknown-windows-msvc\debug\Alamofire.swiftmodule exit 1