ci.yml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367
  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: ${{ matrix.name }}
  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_15.4"
  33. runsOn: firebreak
  34. name: "macOS 14, Xcode 15.4, Swift 5.10"
  35. testPlan: "macOS"
  36. outputFilter: xcbeautify --renderer github-actions
  37. - xcode: "Xcode_15.2"
  38. runsOn: firebreak
  39. name: "macOS 14, Xcode 15.2, Swift 5.9.2"
  40. testPlan: "macOS"
  41. outputFilter: xcbeautify --renderer github-actions
  42. - xcode: "Xcode_15.1"
  43. runsOn: macOS-14
  44. name: "macOS 14, Xcode 15.1, Swift 5.9.1"
  45. testPlan: "macOS"
  46. outputFilter: xcbeautify --renderer github-actions
  47. - xcode: "Xcode_15.0.1"
  48. runsOn: macOS-14
  49. name: "macOS 14, Xcode 15.0.1, Swift 5.9.0"
  50. testPlan: "macOS"
  51. outputFilter: xcbeautify --renderer github-actions
  52. - xcode: "Xcode_14.3.1"
  53. runsOn: macOS-13
  54. name: "macOS 13, Xcode 14.3.1, Swift 5.8.0"
  55. testPlan: "macOS"
  56. outputFilter: xcbeautify --renderer github-actions
  57. - xcode: "Xcode_14.2"
  58. runsOn: macOS-12
  59. name: "macOS 12, Xcode 14.2, Swift 5.7.2"
  60. testPlan: "macOS"
  61. outputFilter: xcpretty
  62. - xcode: "Xcode_14.1"
  63. runsOn: macOS-12
  64. name: "macOS 12, Xcode 14.1, Swift 5.7.1"
  65. testPlan: "macOS"
  66. outputFilter: xcpretty
  67. steps:
  68. - uses: actions/checkout@v4
  69. - name: ${{ matrix.name }}
  70. run: |-
  71. set -o pipefail
  72. brew install alamofire/alamofire/firewalk || brew upgrade alamofire/alamofire/firewalk
  73. firewalk &
  74. env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire macOS" -destination "platform=macOS" -testPlan "${{ matrix.testPlan }}" clean test | ${{ matrix.outputFilter }}
  75. Catalyst:
  76. name: ${{ matrix.name }}
  77. runs-on: ${{ matrix.runsOn }}
  78. env:
  79. DEVELOPER_DIR: /Applications/${{ matrix.xcode }}.app/Contents/Developer
  80. timeout-minutes: 10
  81. strategy:
  82. fail-fast: false
  83. matrix:
  84. include:
  85. - xcode: "Xcode_15.4"
  86. name: "Catalyst 15.4"
  87. runsOn: firebreak
  88. - xcode: "Xcode_15.2"
  89. name: "Catalyst 15.2"
  90. runsOn: firebreak
  91. - xcode: "Xcode_15.1"
  92. name: "Catalyst 15.1"
  93. runsOn: macOS-14
  94. - xcode: "Xcode_15.0.1"
  95. name: "Catalyst 15.0"
  96. runsOn: macOS-14
  97. - xcode: "Xcode_14.3.1"
  98. name: "Catalyst 14.3.1"
  99. runsOn: macOS-13
  100. steps:
  101. - uses: actions/checkout@v4
  102. - name: Install Firewalk
  103. run: brew install alamofire/alamofire/firewalk || brew upgrade alamofire/alamofire/firewalk && firewalk &
  104. - name: Catalyst
  105. run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire iOS" -destination "platform=macOS" clean test 2>&1 | xcbeautify --renderer github-actions
  106. iOS:
  107. name: ${{ matrix.name }}
  108. runs-on: ${{ matrix.runsOn }}
  109. env:
  110. DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer"
  111. timeout-minutes: 10
  112. strategy:
  113. fail-fast: false
  114. matrix:
  115. include:
  116. - destination: "OS=17.5,name=iPhone 15 Pro"
  117. name: "iOS 17.5"
  118. testPlan: "iOS"
  119. xcode: "Xcode_15.4"
  120. runsOn: firebreak
  121. - destination: "OS=17.2,name=iPhone 15 Pro"
  122. name: "iOS 17.2"
  123. testPlan: "iOS"
  124. xcode: "Xcode_15.2"
  125. runsOn: firebreak
  126. - destination: "OS=17.0,name=iPhone 15 Pro"
  127. name: "iOS 17.0"
  128. testPlan: "iOS"
  129. xcode: "Xcode_15.0.1"
  130. runsOn: macOS-14
  131. - destination: "OS=16.4,name=iPhone 14 Pro"
  132. name: "iOS 16.4"
  133. testPlan: "iOS"
  134. xcode: "Xcode_14.3.1"
  135. runsOn: macOS-13
  136. steps:
  137. - uses: actions/checkout@v4
  138. - name: Install Firewalk
  139. run: brew install alamofire/alamofire/firewalk || brew upgrade alamofire/alamofire/firewalk && firewalk &
  140. - name: ${{ matrix.name }}
  141. run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire iOS" -destination "${{ matrix.destination }}" -testPlan "${{ matrix.testPlan }}" clean test 2>&1 | xcbeautify --renderer github-actions
  142. tvOS:
  143. name: ${{ matrix.name }}
  144. runs-on: ${{ matrix.runsOn }}
  145. env:
  146. DEVELOPER_DIR: /Applications/${{ matrix.xcode }}.app/Contents/Developer
  147. timeout-minutes: 10
  148. strategy:
  149. fail-fast: false
  150. matrix:
  151. include:
  152. - destination: "OS=17.5,name=Apple TV"
  153. name: "tvOS 17.5"
  154. testPlan: "tvOS"
  155. xcode: "Xcode_15.4"
  156. runsOn: firebreak
  157. - destination: "OS=17.2,name=Apple TV"
  158. name: "tvOS 17.2"
  159. testPlan: "tvOS"
  160. xcode: "Xcode_15.2"
  161. runsOn: firebreak
  162. - destination: "OS=17.0,name=Apple TV"
  163. name: "tvOS 17.0"
  164. testPlan: "tvOS"
  165. xcode: "Xcode_15.0.1"
  166. runsOn: macOS-14
  167. - destination: "OS=16.4,name=Apple TV"
  168. name: "tvOS 16.4"
  169. testPlan: "tvOS"
  170. xcode: "Xcode_14.3.1"
  171. runsOn: macOS-13
  172. steps:
  173. - uses: actions/checkout@v4
  174. - name: Install Firewalk
  175. run: brew install alamofire/alamofire/firewalk || brew upgrade alamofire/alamofire/firewalk && firewalk &
  176. - name: ${{ matrix.name }}
  177. run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire tvOS" -destination "${{ matrix.destination }}" -testPlan "${{ matrix.testPlan }}" clean test 2>&1 | xcbeautify --renderer github-actions
  178. visionOS:
  179. name: ${{ matrix.name }}
  180. runs-on: ${{ matrix.runsOn }}
  181. env:
  182. DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer"
  183. timeout-minutes: 10
  184. strategy:
  185. fail-fast: false
  186. matrix:
  187. include:
  188. - destination: "OS=1.2,name=Apple Vision Pro"
  189. name: "visionOS 1.2"
  190. testPlan: "visionOS"
  191. scheme: "Alamofire visionOS"
  192. xcode: "Xcode_15.4"
  193. runsOn: firebreak
  194. - destination: "OS=1.0,name=Apple Vision Pro"
  195. name: "visionOS 1.0"
  196. testPlan: "visionOS"
  197. scheme: "Alamofire visionOS"
  198. xcode: "Xcode_15.2"
  199. runsOn: firebreak
  200. steps:
  201. - uses: actions/checkout@v4
  202. - name: Install Firewalk
  203. run: brew install alamofire/alamofire/firewalk || brew upgrade alamofire/alamofire/firewalk && firewalk &
  204. - name: ${{ matrix.name }}
  205. run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "${{ matrix.scheme }}" -destination "${{ matrix.destination }}" -testPlan "${{ matrix.testPlan }}" clean test 2>&1 | xcbeautify --renderer github-actions
  206. watchOS:
  207. name: ${{ matrix.name }}
  208. runs-on: ${{ matrix.runsOn }}
  209. env:
  210. DEVELOPER_DIR: /Applications/${{ matrix.xcode }}.app/Contents/Developer
  211. timeout-minutes: 10
  212. strategy:
  213. fail-fast: false
  214. matrix:
  215. include:
  216. - destination: "OS=10.5,name=Apple Watch Series 9 (45mm)"
  217. name: "watchOS 10.5"
  218. testPlan: "watchOS"
  219. xcode: "Xcode_15.4"
  220. runsOn: firebreak
  221. - destination: "OS=10.2,name=Apple Watch Series 9 (45mm)"
  222. name: "watchOS 10.2"
  223. testPlan: "watchOS"
  224. xcode: "Xcode_15.2"
  225. runsOn: firebreak
  226. - destination: "OS=10.0,name=Apple Watch Series 9 (45mm)"
  227. name: "watchOS 10.0"
  228. testPlan: "watchOS"
  229. xcode: "Xcode_15.0.1"
  230. runsOn: macOS-14
  231. - destination: "OS=9.4,name=Apple Watch Series 8 (45mm)"
  232. name: "watchOS 9.4"
  233. testPlan: "watchOS"
  234. xcode: "Xcode_14.3.1"
  235. runsOn: macOS-13
  236. steps:
  237. - uses: actions/checkout@v4
  238. - name: Install Firewalk
  239. run: brew update && brew install alamofire/alamofire/firewalk || brew upgrade alamofire/alamofire/firewalk && firewalk &
  240. - name: ${{ matrix.name }}
  241. run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire watchOS" -destination "${{ matrix.destination }}" -testPlan "${{ matrix.testPlan }}" clean test 2>&1 | xcbeautify --renderer github-actions
  242. SPM:
  243. name: ${{ matrix.name }}
  244. runs-on: ${{ matrix.runsOn }}
  245. env:
  246. DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer"
  247. timeout-minutes: 10
  248. strategy:
  249. fail-fast: false
  250. matrix:
  251. include:
  252. - xcode: "Xcode_15.4"
  253. runsOn: firebreak
  254. name: "macOS 14, SPM 5.10 Test"
  255. outputFilter: xcbeautify --renderer github-actions
  256. - xcode: "Xcode_15.2"
  257. runsOn: firebreak
  258. name: "macOS 14, SPM 5.9.2 Test"
  259. outputFilter: xcbeautify --renderer github-actions
  260. - xcode: "Xcode_15.1"
  261. runsOn: macOS-14
  262. name: "macOS 14, SPM 5.9.1 Test"
  263. outputFilter: xcbeautify --renderer github-actions
  264. - xcode: "Xcode_15.0.1"
  265. runsOn: macOS-14
  266. name: "macOS 14, SPM 5.9.0 Test"
  267. outputFilter: xcbeautify --renderer github-actions
  268. - xcode: "Xcode_14.3.1"
  269. runsOn: macOS-13
  270. name: "macOS 13, SPM 5.8.0 Test"
  271. outputFilter: xcbeautify --renderer github-actions
  272. - xcode: "Xcode_14.2"
  273. runsOn: macOS-12
  274. name: "macOS 12, SPM 5.7.2 Test"
  275. outputFilter: xcpretty
  276. - xcode: "Xcode_14.1"
  277. runsOn: macOS-12
  278. name: "macOS 12, SPM 5.7.1 Test"
  279. outputFilter: xcpretty
  280. steps:
  281. - uses: actions/checkout@v4
  282. - name: Install Firewalk
  283. run: brew install alamofire/alamofire/firewalk || brew upgrade alamofire/alamofire/firewalk xcbeautify && firewalk &
  284. - name: Test SPM
  285. run: swift test -c debug 2>&1 | ${{ matrix.outputFilter }}
  286. Linux:
  287. name: Linux
  288. runs-on: ubuntu-latest
  289. strategy:
  290. fail-fast: false
  291. matrix:
  292. include:
  293. - image: swift:5.8-focal
  294. - image: swift:5.8-jammy
  295. - image: swift:5.8-rhel-ubi9
  296. - image: swift:5.9-focal
  297. - image: swift:5.9-jammy
  298. - image: swift:5.9-rhel-ubi9
  299. - image: swift:5.10-focal
  300. - image: swift:5.10-jammy
  301. - image: swift:5.10-rhel-ubi9
  302. - image: swiftlang/swift:nightly-focal
  303. - image: swiftlang/swift:nightly-jammy
  304. container:
  305. image: ${{ matrix.image }}
  306. timeout-minutes: 10
  307. steps:
  308. - uses: actions/checkout@v4
  309. - name: ${{ matrix.image }}
  310. run: swift build --build-tests -c debug
  311. Android:
  312. name: Android
  313. uses: hggz/swift-android-sdk/.github/workflows/sdks.yml@ci
  314. strategy:
  315. fail-fast: false
  316. with:
  317. target-repo: ${{ github.repository }}
  318. checkout-hash: ${{ github.sha }}
  319. Windows:
  320. name: ${{ matrix.name }}
  321. runs-on: windows-latest
  322. timeout-minutes: 10
  323. strategy:
  324. fail-fast: false
  325. matrix:
  326. include:
  327. - branch: swift-5.8-release
  328. tag: 5.8-RELEASE
  329. name: Windows Swift 5.8
  330. - branch: swift-5.9-release
  331. tag: 5.9-RELEASE
  332. name: Windows Swift 5.9
  333. - branch: swift-5.10-release
  334. tag: 5.10-RELEASE
  335. name: Windows Swift 5.10
  336. steps:
  337. - name: Setup
  338. uses: compnerd/gha-setup-swift@main
  339. with:
  340. branch: ${{ matrix.branch }}
  341. tag: ${{ matrix.tag }}
  342. - name: Clone
  343. uses: actions/checkout@v4
  344. - name: SPM ${{ matrix.name }}
  345. run: |
  346. swift build --build-tests -c debug -Xlinker /INCREMENTAL:NO -v
  347. CodeQL:
  348. name: Analyze with CodeQL
  349. runs-on: macOS-13
  350. env:
  351. DEVELOPER_DIR: "/Applications/Xcode_14.3.1.app/Contents/Developer"
  352. timeout-minutes: 10
  353. steps:
  354. - name: Clone
  355. uses: actions/checkout@v4
  356. - name: Initialize CodeQL
  357. uses: github/codeql-action/init@v2
  358. with:
  359. languages: swift
  360. - name: Build macOS
  361. run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire macOS" -destination "platform=macOS" clean build | xcpretty
  362. - name: Perform CodeQL Analysis
  363. uses: github/codeql-action/analyze@v2
  364. with:
  365. category: "/language:swift"