ci.yml 12 KB

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