ci.yml 12 KB

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