ci.yml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320
  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 }}.app/Contents/Developer"
  27. timeout-minutes: 10
  28. strategy:
  29. fail-fast: false
  30. matrix:
  31. include:
  32. - xcode: "Xcode_14.3"
  33. runsOn: firebreak
  34. name: "macOS 13, Xcode 14.3, Swift 5.8.0"
  35. testPlan: "macOS"
  36. - xcode: "Xcode_14.2"
  37. runsOn: macOS-12
  38. name: "macOS 12, Xcode 14.2, Swift 5.7.2"
  39. testPlan: "macOS"
  40. - xcode: "Xcode_14.1"
  41. runsOn: macOS-12
  42. name: "macOS 12, Xcode 14.1, Swift 5.7.1"
  43. testPlan: "macOS"
  44. - xcode: "Xcode_14.0.1"
  45. runsOn: macOS-12
  46. name: "macOS 12, Xcode 14.0.1, Swift 5.7.0"
  47. testPlan: "macOS"
  48. - xcode: "Xcode_13.4.1"
  49. runsOn: macOS-12
  50. name: "macOS 12, Xcode 13.4.1, Swift 5.6.1"
  51. testPlan: "macOS-NoTS"
  52. - xcode: "Xcode_13.3.1"
  53. runsOn: macOS-12
  54. name: "macOS 12, Xcode 13.3.1, Swift 5.6.0"
  55. testPlan: "macOS-NoTS"
  56. - xcode: "Xcode_13.2.1"
  57. runsOn: macOS-11
  58. name: "macOS 11, Xcode 13.2.1, Swift 5.5.2"
  59. testPlan: "macOS-NoTS"
  60. - xcode: "Xcode_13.1"
  61. runsOn: macOS-11
  62. name: "macOS 11, Xcode 13.1, Swift 5.5.1"
  63. testPlan: "macOS-NoTS"
  64. - xcode: "Xcode_13.0"
  65. runsOn: macOS-11
  66. name: "macOS 11, Xcode 13.0, Swift 5.5.0"
  67. testPlan: "macOS-NoTS"
  68. steps:
  69. - uses: actions/checkout@v3
  70. - name: Install Firewalk
  71. run: "brew install alamofire/alamofire/firewalk && firewalk &"
  72. - name: ${{ matrix.name }}
  73. run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire macOS" -destination "platform=macOS" -testPlan "${{ matrix.testPlan }}" clean test | xcpretty
  74. Catalyst:
  75. name: Test Catalyst
  76. runs-on: macOS-13
  77. env:
  78. DEVELOPER_DIR: /Applications/Xcode_14.3.app/Contents/Developer
  79. timeout-minutes: 10
  80. steps:
  81. - uses: actions/checkout@v3
  82. - name: Install Firewalk
  83. run: brew install alamofire/alamofire/firewalk && firewalk &
  84. - name: Catalyst
  85. run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire iOS" -destination "platform=macOS" clean test | xcpretty
  86. Latest:
  87. name: Test Latest (iOS, tvOS, watchOS)
  88. runs-on: macOS-13
  89. env:
  90. DEVELOPER_DIR: "/Applications/Xcode_14.3.app/Contents/Developer"
  91. timeout-minutes: 10
  92. strategy:
  93. fail-fast: false
  94. matrix:
  95. include:
  96. - destination: "OS=16.4,name=iPhone 14 Pro"
  97. name: "iOS"
  98. scheme: "Alamofire iOS"
  99. - destination: "OS=16.4,name=Apple TV"
  100. name: "tvOS"
  101. scheme: "Alamofire tvOS"
  102. - destination: "OS=9.4,name=Apple Watch Series 8 (45mm)"
  103. name: "watchOS"
  104. scheme: "Alamofire watchOS"
  105. steps:
  106. - uses: actions/checkout@v3
  107. - name: Install Firewalk
  108. run: brew install alamofire/alamofire/firewalk && firewalk &
  109. - name: ${{ matrix.name }}
  110. run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "${{ matrix.scheme }}" -destination "${{ matrix.destination }}" clean test | xcpretty
  111. iOS:
  112. name: "Test Old iOS"
  113. runs-on: firebreak
  114. env:
  115. DEVELOPER_DIR: "/Applications/Xcode_14.3.app/Contents/Developer"
  116. timeout-minutes: 10
  117. strategy:
  118. fail-fast: false
  119. matrix:
  120. include:
  121. - destination: "OS=15.5,name=iPhone 13 Pro"
  122. name: "iOS 15.5"
  123. testPlan: "iOS-NoTS"
  124. - destination: "OS=14.5,name=iPhone 12 Pro"
  125. name: "iOS 14.5"
  126. testPlan: "iOS-NoTS"
  127. # - destination: "OS=13.7,name=iPhone 11 Pro"
  128. # name: "iOS 13.7"
  129. # testPlan: "iOS-NoTS"
  130. steps:
  131. - uses: actions/checkout@v3
  132. - name: Install Firewalk
  133. run: brew install alamofire/alamofire/firewalk || brew upgrade alamofire/alamofire/firewalk && firewalk &
  134. - name: ${{ matrix.name }}
  135. run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire iOS" -destination "${{ matrix.destination }}" -testPlan "${{ matrix.testPlan }}" clean test | xcpretty
  136. Beta:
  137. name: "Test Beta iOS"
  138. runs-on: firebreak
  139. env:
  140. DEVELOPER_DIR: "/Applications/Xcode_15.0.app/Contents/Developer"
  141. timeout-minutes: 10
  142. strategy:
  143. fail-fast: false
  144. matrix:
  145. include:
  146. - destination: "OS=17.0,name=iPhone 14 Pro"
  147. name: "iOS 17.0"
  148. testPlan: "iOS"
  149. scheme: "Alamofire iOS"
  150. - destination: "OS=1.0,name=Apple Vision Pro"
  151. name: "visionOS 1.0"
  152. testPlan: "visionOS"
  153. scheme: "Alamofire visionOS"
  154. steps:
  155. - uses: actions/checkout@v3
  156. - name: Install Firewalk
  157. run: brew install alamofire/alamofire/firewalk || brew upgrade alamofire/alamofire/firewalk && firewalk &
  158. - name: ${{ matrix.name }}
  159. run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "${{ matrix.scheme }}" -destination "${{ matrix.destination }}" -testPlan "${{ matrix.testPlan }}" clean test | xcpretty
  160. tvOS:
  161. name: Test Old tvOS
  162. runs-on: firebreak
  163. env:
  164. DEVELOPER_DIR: /Applications/Xcode_14.3.app/Contents/Developer
  165. timeout-minutes: 10
  166. strategy:
  167. fail-fast: false
  168. matrix:
  169. include:
  170. - destination: "OS=15.4,name=Apple TV"
  171. name: "tvOS 15.4"
  172. testPlan: "tvOS-NoTS"
  173. - destination: "OS=14.5,name=Apple TV"
  174. name: "tvOS 14.5"
  175. testPlan: "tvOS-NoTS"
  176. # - destination: "OS=13.4,name=Apple TV"
  177. # name: "tvOS 13.4"
  178. # testPlan: "tvOS-NoTS"
  179. steps:
  180. - uses: actions/checkout@v3
  181. - name: Install Firewalk
  182. run: brew install alamofire/alamofire/firewalk || brew upgrade alamofire/alamofire/firewalk && firewalk &
  183. - name: ${{ matrix.name }}
  184. run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire tvOS" -destination "${{ matrix.destination }}" -testPlan "${{ matrix.testPlan }}" clean test | xcpretty
  185. watchOS:
  186. name: Test Old watchOS
  187. runs-on: firebreak
  188. env:
  189. DEVELOPER_DIR: /Applications/Xcode_14.3.app/Contents/Developer
  190. timeout-minutes: 10
  191. strategy:
  192. fail-fast: false
  193. matrix:
  194. include:
  195. - destination: "OS=8.5,name=Apple Watch Series 7 (45mm)"
  196. name: "watchOS 8.5"
  197. testPlan: "watchOS-NoTS"
  198. - destination: "OS=7.4,name=Apple Watch Series 6 (44mm)"
  199. name: "watchOS 7.4"
  200. testPlan: "watchOS-NoTS"
  201. steps:
  202. - uses: actions/checkout@v3
  203. - name: Install Firewalk
  204. run: brew install alamofire/alamofire/firewalk && firewalk &
  205. - name: ${{ matrix.name}}
  206. run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire watchOS" -destination "${{ matrix.destination }}" -testPlan "${{ matrix.testPlan }}" clean test | xcpretty
  207. SPM:
  208. name: Test with SPM
  209. runs-on: ${{ matrix.runsOn }}
  210. env:
  211. DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer"
  212. timeout-minutes: 10
  213. strategy:
  214. fail-fast: false
  215. matrix:
  216. include:
  217. - xcode: "Xcode_14.3"
  218. runsOn: firebreak
  219. name: "macOS 13, SPM 5.8.0 Test"
  220. - xcode: "Xcode_14.2"
  221. runsOn: macOS-12
  222. name: "macOS 12, SPM 5.7.2 Test"
  223. - xcode: "Xcode_14.1"
  224. runsOn: macOS-12
  225. name: "macOS 12, SPM 5.7.1 Test"
  226. - xcode: "Xcode_14.0.1"
  227. runsOn: macOS-12
  228. name: "macOS 12, SPM 5.7.0 Test"
  229. - xcode: "Xcode_13.4.1"
  230. runsOn: macOS-12
  231. name: "macOS 12, SPM 5.6.1 Test"
  232. - xcode: "Xcode_13.3.1"
  233. runsOn: macOS-12
  234. name: "macOS 12, SPM 5.6.0 Test"
  235. - xcode: "Xcode_13.2.1"
  236. runsOn: macOS-11
  237. name: "macOS 11, SPM 5.5.2 Test"
  238. - xcode: "Xcode_13.1"
  239. runsOn: macOS-11
  240. name: "macOS 11, SPM 5.5.1 Test"
  241. - xcode: "Xcode_13.0"
  242. runsOn: macOS-11
  243. name: "macOS 11, SPM 5.5.0 Test"
  244. steps:
  245. - uses: actions/checkout@v3
  246. - name: Install Firewalk
  247. run: brew install alamofire/alamofire/firewalk && firewalk &
  248. - name: Test SPM
  249. run: swift test -c debug
  250. Linux:
  251. name: Linux
  252. runs-on: ubuntu-latest
  253. strategy:
  254. fail-fast: false
  255. matrix:
  256. include:
  257. - image: swift:5.8.0-focal
  258. - image: swift:5.8.0-jammy
  259. - image: swift:5.8.0-bionic
  260. - image: swift:5.8.0-centos7
  261. - image: swift:5.8.0-amazonlinux2
  262. - image: swift:5.8.0-rhel-ubi9
  263. - image: swiftlang/swift:nightly-focal
  264. - image: swiftlang/swift:nightly-jammy
  265. - image: swiftlang/swift:nightly-amazonlinux2
  266. container:
  267. image: ${{ matrix.image }}
  268. timeout-minutes: 10
  269. steps:
  270. - uses: actions/checkout@v3
  271. - name: ${{ matrix.image }}
  272. run: swift build --build-tests -c debug
  273. Android:
  274. name: Android
  275. uses: hggz/swift-android-sdk/.github/workflows/sdks.yml@ci
  276. strategy:
  277. fail-fast: false
  278. with:
  279. target-repo: ${{ github.repository }}
  280. checkout-hash: ${{ github.sha }}
  281. Windows:
  282. name: Windows
  283. runs-on: windows-latest
  284. timeout-minutes: 10
  285. steps:
  286. - name: Setup
  287. uses: compnerd/gha-setup-swift@main
  288. with:
  289. branch: swift-5.8-release
  290. tag: 5.8-RELEASE
  291. - name: Clone
  292. uses: actions/checkout@v3
  293. - name: SPM Windows Build
  294. shell: cmd
  295. run: |
  296. cd ${{ github.workspace }}
  297. set SDKROOT=%SystemDrive%\Library\Developer\Platforms\Windows.platform\Developer\SDKs\Windows.sdk
  298. %SystemDrive%\Library\Developer\Toolchains\unknown-Asserts-development.xctoolchain\usr\bin\swift-build.exe --build-tests -c debug -Xlinker /INCREMENTAL:NO -v
  299. if not exist .build\x86_64-unknown-windows-msvc\debug\Alamofire.swiftmodule exit 1
  300. CodeQL:
  301. name: Analyze with CodeQL
  302. runs-on: macOS-13
  303. env:
  304. DEVELOPER_DIR: "/Applications/Xcode_14.3.1.app/Contents/Developer"
  305. timeout-minutes: 10
  306. steps:
  307. - name: Clone
  308. uses: actions/checkout@v3
  309. - name: Initialize CodeQL
  310. uses: github/codeql-action/init@v2
  311. with:
  312. languages: swift
  313. - name: Build macOS
  314. run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire macOS" -destination "platform=macOS" clean build | xcpretty
  315. - name: Perform CodeQL Analysis
  316. uses: github/codeql-action/analyze@v2
  317. with:
  318. category: "/language:swift"