.azure-pipelines.yml 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. # https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/hosted?view=azure-devops&tabs=yaml
  2. variables:
  3. MIN_VM_IMAGE: macOS-13
  4. MIN_XCODE_VERSION: 14.3.1
  5. MIN_PLATFORM_VERSION: 16.4
  6. MIN_TV_PLATFORM_VERSION: 16.4
  7. MIN_TV_DEVICE_NAME: Apple TV 4K (3rd generation)
  8. MIN_IPHONE_DEVICE_NAME: iPhone 14 Plus
  9. MIN_IPAD_DEVICE_NAME: iPad Pro (11-inch) (4th generation)
  10. MAX_VM_IMAGE: macOS-14
  11. MAX_XCODE_VERSION: 15.4
  12. MAX_PLATFORM_VERSION: 17.5
  13. MAX_PLATFORM_VERSION_TV: 17.5
  14. MAX_IPHONE_DEVICE_NAME: iPhone 15 Plus
  15. MAX_TV_DEVICE_NAME: Apple TV 4K (3rd generation)
  16. MAX_IPAD_DEVICE_NAME: iPad Air 11-inch (M2)
  17. DEFAULT_NODE_VERSION: "18.x"
  18. trigger:
  19. batch: true
  20. branches:
  21. include: [master]
  22. pr:
  23. autoCancel: true
  24. branches:
  25. include: [master]
  26. pool:
  27. vmImage: "$(MAX_VM_IMAGE)"
  28. parameters:
  29. - name: integrationJobs
  30. type: object
  31. default:
  32. - action: int_test_1
  33. dest: iphone
  34. - action: int_test_2
  35. dest: iphone
  36. - action: int_test_3
  37. dest: iphone
  38. - action: int_test_1
  39. dest: ipad
  40. - action: int_test_2
  41. dest: ipad
  42. - action: int_test_3
  43. dest: ipad
  44. stages:
  45. - stage: Unit_Tests_And_Linters
  46. jobs:
  47. # region Build
  48. - template: ./azure-templates/base_job.yml
  49. parameters:
  50. name: Generic_iOS_Build_Max_Xcode
  51. action: build
  52. target: runner
  53. sdk: sim
  54. dest: generic
  55. codeSign: no
  56. xcodeVersion: $(MAX_XCODE_VERSION)
  57. vmImage: $(MAX_VM_IMAGE)
  58. - template: ./azure-templates/base_job.yml
  59. parameters:
  60. name: Generic_tvOS_Build_Max_Xcode
  61. action: build
  62. target: tv_runner
  63. sdk: tv_sim
  64. dest: tv_generic
  65. codeSign: no
  66. xcodeVersion: $(MAX_XCODE_VERSION)
  67. vmImage: $(MAX_VM_IMAGE)
  68. - template: ./azure-templates/base_job.yml
  69. parameters:
  70. name: iOS_Build_Max_Xcode
  71. action: build
  72. target: runner
  73. sdk: sim
  74. iphoneModel: $(MAX_IPHONE_DEVICE_NAME)
  75. ipadModel: $(MAX_IPAD_DEVICE_NAME)
  76. iosVersion: $(MAX_PLATFORM_VERSION)
  77. xcodeVersion: $(MAX_XCODE_VERSION)
  78. vmImage: $(MAX_VM_IMAGE)
  79. - template: ./azure-templates/base_job.yml
  80. parameters:
  81. name: tvOS_Build_Max_Xcode
  82. action: build
  83. target: tv_runner
  84. sdk: tv_sim
  85. tvModel: $(MAX_TV_DEVICE_NAME)
  86. tvVersion: $(MAX_PLATFORM_VERSION_TV)
  87. xcodeVersion: $(MAX_XCODE_VERSION)
  88. vmImage: $(MAX_VM_IMAGE)
  89. - template: ./azure-templates/base_job.yml
  90. parameters:
  91. name: Generic_iOS_Build_Min_Xcode
  92. action: build
  93. target: runner
  94. sdk: sim
  95. dest: generic
  96. codeSign: no
  97. xcodeVersion: $(MIN_XCODE_VERSION)
  98. vmImage: $(MIN_VM_IMAGE)
  99. extraXcArgs: IPHONEOS_DEPLOYMENT_TARGET=$(MIN_PLATFORM_VERSION)
  100. - template: ./azure-templates/base_job.yml
  101. parameters:
  102. name: Generic_tvOS_Build_Min_Xcode
  103. action: build
  104. target: tv_runner
  105. dest: tv_generic
  106. sdk: tv_sim
  107. codeSign: no
  108. xcodeVersion: $(MIN_XCODE_VERSION)
  109. vmImage: $(MIN_VM_IMAGE)
  110. - template: ./azure-templates/base_job.yml
  111. parameters:
  112. name: iOS_Build_Min_Xcode
  113. action: build
  114. target: runner
  115. sdk: sim
  116. iphoneModel: $(MIN_IPHONE_DEVICE_NAME)
  117. ipadModel: $(MIN_IPAD_DEVICE_NAME)
  118. iosVersion: $(MIN_PLATFORM_VERSION)
  119. xcodeVersion: $(MIN_XCODE_VERSION)
  120. vmImage: $(MIN_VM_IMAGE)
  121. - template: ./azure-templates/base_job.yml
  122. parameters:
  123. name: tvOS_Build_Min_Xcode
  124. action: build
  125. target: tv_runner
  126. sdk: tv_sim
  127. dest: tv
  128. tvModel: $(MIN_TV_DEVICE_NAME)
  129. tvVersion: $(MIN_TV_PLATFORM_VERSION)
  130. xcodeVersion: $(MIN_XCODE_VERSION)
  131. vmImage: $(MIN_VM_IMAGE)
  132. # endregion
  133. # region Analyze
  134. - template: ./azure-templates/base_job.yml
  135. parameters:
  136. name: iOS_Lib_Analyze_Max_Xcode
  137. action: analyze
  138. sdk: sim
  139. target: lib
  140. iphoneModel: $(MAX_IPHONE_DEVICE_NAME)
  141. ipadModel: $(MAX_IPAD_DEVICE_NAME)
  142. iosVersion: $(MAX_PLATFORM_VERSION)
  143. xcodeVersion: $(MAX_XCODE_VERSION)
  144. vmImage: $(MAX_VM_IMAGE)
  145. - template: ./azure-templates/base_job.yml
  146. parameters:
  147. name: iOS_Runner_Analyze_Max_Xcode
  148. action: analyze
  149. sdk: sim
  150. target: runner
  151. iphoneModel: $(MAX_IPHONE_DEVICE_NAME)
  152. ipadModel: $(MAX_IPAD_DEVICE_NAME)
  153. iosVersion: $(MAX_PLATFORM_VERSION)
  154. xcodeVersion: $(MAX_XCODE_VERSION)
  155. vmImage: $(MAX_VM_IMAGE)
  156. - template: ./azure-templates/base_job.yml
  157. parameters:
  158. name: tvOS_Lib_Analyze_Max_Xcode
  159. action: analyze
  160. target: tv_lib
  161. sdk: tv_sim
  162. tvModel: $(MAX_TV_DEVICE_NAME)
  163. tvVersion: $(MAX_PLATFORM_VERSION_TV)
  164. xcodeVersion: $(MAX_XCODE_VERSION)
  165. vmImage: $(MAX_VM_IMAGE)
  166. - template: ./azure-templates/base_job.yml
  167. parameters:
  168. name: tvOS_Runner_Analyze_Max_Xcode
  169. action: analyze
  170. target: tv_runner
  171. sdk: tv_sim
  172. tvModel: $(MAX_TV_DEVICE_NAME)
  173. tvVersion: $(MAX_PLATFORM_VERSION_TV)
  174. xcodeVersion: $(MAX_XCODE_VERSION)
  175. vmImage: $(MAX_VM_IMAGE)
  176. - template: ./azure-templates/base_job.yml
  177. parameters:
  178. name: iOS_Lib_Analyze_Min_Xcode
  179. action: analyze
  180. target: lib
  181. sdk: sim
  182. iphoneModel: $(MIN_IPHONE_DEVICE_NAME)
  183. ipadModel: $(MIN_IPAD_DEVICE_NAME)
  184. iosVersion: $(MIN_PLATFORM_VERSION)
  185. xcodeVersion: $(MIN_XCODE_VERSION)
  186. vmImage: $(MIN_VM_IMAGE)
  187. - template: ./azure-templates/base_job.yml
  188. parameters:
  189. name: iOS_Runner_Analyze_Min_Xcode
  190. action: analyze
  191. target: runner
  192. sdk: sim
  193. iphoneModel: $(MIN_IPHONE_DEVICE_NAME)
  194. ipadModel: $(MIN_IPAD_DEVICE_NAME)
  195. iosVersion: $(MIN_PLATFORM_VERSION)
  196. xcodeVersion: $(MIN_XCODE_VERSION)
  197. vmImage: $(MIN_VM_IMAGE)
  198. - template: ./azure-templates/base_job.yml
  199. parameters:
  200. name: tvOS_Lib_Analyze_Min_Xcode
  201. action: analyze
  202. target: tv_lib
  203. sdk: tv_sim
  204. tvModel: $(MIN_TV_DEVICE_NAME)
  205. tvVersion: $(MIN_TV_PLATFORM_VERSION)
  206. xcodeVersion: $(MIN_XCODE_VERSION)
  207. vmImage: $(MIN_VM_IMAGE)
  208. - template: ./azure-templates/base_job.yml
  209. parameters:
  210. name: tvOS_Runner_Analyze_Min_Xcode
  211. action: analyze
  212. target: tv_runner
  213. sdk: tv_sim
  214. tvModel: $(MIN_TV_DEVICE_NAME)
  215. tvVersion: $(MIN_TV_PLATFORM_VERSION)
  216. xcodeVersion: $(MIN_XCODE_VERSION)
  217. vmImage: $(MIN_VM_IMAGE)
  218. # endregion
  219. # region Unit Tests
  220. - template: ./azure-templates/base_job.yml
  221. parameters:
  222. name: iPhone_Unit_Test_Max_Xcode
  223. action: unit_test
  224. dest: iphone
  225. target: lib
  226. sdk: sim
  227. iphoneModel: $(MAX_IPHONE_DEVICE_NAME)
  228. ipadModel: $(MAX_IPAD_DEVICE_NAME)
  229. iosVersion: $(MAX_PLATFORM_VERSION)
  230. xcodeVersion: $(MAX_XCODE_VERSION)
  231. vmImage: $(MAX_VM_IMAGE)
  232. - template: ./azure-templates/base_job.yml
  233. parameters:
  234. name: iPad_Unit_Test_Max_Xcode
  235. action: unit_test
  236. dest: ipad
  237. target: lib
  238. sdk: sim
  239. iphoneModel: $(MAX_IPHONE_DEVICE_NAME)
  240. ipadModel: $(MAX_IPAD_DEVICE_NAME)
  241. iosVersion: $(MAX_PLATFORM_VERSION)
  242. xcodeVersion: $(MAX_XCODE_VERSION)
  243. vmImage: $(MAX_VM_IMAGE)
  244. - template: ./azure-templates/base_job.yml
  245. parameters:
  246. name: tvOS_Unit_Test_Max_Xcode
  247. action: tv_unit_test
  248. dest: tv
  249. target: tv_lib
  250. sdk: tv_sim
  251. tvModel: $(MAX_TV_DEVICE_NAME)
  252. tvVersion: $(MAX_PLATFORM_VERSION_TV)
  253. xcodeVersion: $(MAX_XCODE_VERSION)
  254. vmImage: $(MAX_VM_IMAGE)
  255. - template: ./azure-templates/base_job.yml
  256. parameters:
  257. name: iPhone_Unit_Test_Min_Xcode
  258. action: unit_test
  259. dest: iphone
  260. target: lib
  261. sdk: sim
  262. iphoneModel: $(MIN_IPHONE_DEVICE_NAME)
  263. ipadModel: $(MIN_IPAD_DEVICE_NAME)
  264. iosVersion: $(MIN_PLATFORM_VERSION)
  265. xcodeVersion: $(MIN_XCODE_VERSION)
  266. vmImage: $(MIN_VM_IMAGE)
  267. - template: ./azure-templates/base_job.yml
  268. parameters:
  269. name: iPad_Unit_Test_Min_Xcode
  270. action: unit_test
  271. dest: ipad
  272. target: lib
  273. sdk: sim
  274. iphoneModel: $(MIN_IPHONE_DEVICE_NAME)
  275. ipadModel: $(MIN_IPAD_DEVICE_NAME)
  276. iosVersion: $(MIN_PLATFORM_VERSION)
  277. xcodeVersion: $(MIN_XCODE_VERSION)
  278. vmImage: $(MIN_VM_IMAGE)
  279. - template: ./azure-templates/base_job.yml
  280. parameters:
  281. name: tvOS_Unit_Test_Min_Xcode
  282. action: tv_unit_test
  283. dest: tv
  284. target: tv_lib
  285. sdk: tv_sim
  286. tvModel: $(MIN_TV_DEVICE_NAME)
  287. tvVersion: $(MIN_TV_PLATFORM_VERSION)
  288. xcodeVersion: $(MIN_XCODE_VERSION)
  289. vmImage: $(MIN_VM_IMAGE)
  290. # endregion
  291. - stage: Integration_Tests
  292. jobs:
  293. # region Integration Tests Max Xcode
  294. - ${{ each job in parameters.integrationJobs }}:
  295. - template: ./azure-templates/base_job.yml
  296. parameters:
  297. name: ${{ job.dest }}_${{ job.action }}_Max_Xcode
  298. action: ${{ job.action }}
  299. dest: ${{ job.dest }}
  300. target: lib
  301. sdk: sim
  302. iphoneModel: $(MAX_IPHONE_DEVICE_NAME)
  303. ipadModel: $(MAX_IPAD_DEVICE_NAME)
  304. iosVersion: $(MAX_PLATFORM_VERSION)
  305. xcodeVersion: $(MAX_XCODE_VERSION)
  306. vmImage: $(MAX_VM_IMAGE)
  307. # endregion
  308. # region Integration Tests Min Xcode
  309. - ${{ each job in parameters.integrationJobs }}:
  310. - template: ./azure-templates/base_job.yml
  311. parameters:
  312. name: ${{ job.dest }}_${{ job.action }}_Min_Xcode
  313. action: ${{ job.action }}
  314. dest: ${{ job.dest }}
  315. target: lib
  316. sdk: sim
  317. iphoneModel: $(MIN_IPHONE_DEVICE_NAME)
  318. ipadModel: $(MIN_IPAD_DEVICE_NAME)
  319. iosVersion: $(MIN_PLATFORM_VERSION)
  320. xcodeVersion: $(MIN_XCODE_VERSION)
  321. vmImage: $(MIN_VM_IMAGE)
  322. # endregion