pipeline.template.yml 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512
  1. # Copyright Materialize, Inc. and contributors. All rights reserved.
  2. #
  3. # Use of this software is governed by the Business Source License
  4. # included in the LICENSE file at the root of this repository.
  5. #
  6. # As of the Change Date specified in that file, in accordance with
  7. # the Business Source License, use of this software will be governed
  8. # by the Apache License, Version 2.0.
  9. # Runs long, but can block a release
  10. priority: 40
  11. env:
  12. CI_BAZEL_BUILD: 1
  13. CI_BAZEL_REMOTE_CACHE: $BAZEL_REMOTE_CACHE
  14. CI_BAZEL_LTO: 1
  15. steps:
  16. - group: Builds
  17. key: builds
  18. steps:
  19. - id: build-aarch64
  20. label: ":bazel: Build aarch64"
  21. command: bin/ci-builder run min bin/pyactivate -m ci.test.build
  22. inputs:
  23. - "*"
  24. artifact_paths: bazel-explain.log
  25. depends_on: []
  26. timeout_in_minutes: 60
  27. agents:
  28. queue: builder-linux-aarch64-mem
  29. # Don't build for "trigger_job" source, which indicates that this release
  30. # qualification pipeline was triggered automatically by the tests pipeline
  31. # because there is a new tag on a v* branch. In this case we want to make
  32. # sure we use the exact same version for testing here as was tagged and
  33. # will be released, and don't build our own version just for the tests.
  34. if: build.source == "ui" || build.source == "schedule" || build.source == "api"
  35. - id: build-x86_64
  36. label: ":bazel: Build x86_64"
  37. command: bin/ci-builder run min bin/pyactivate -m ci.test.build
  38. inputs:
  39. - "*"
  40. artifact_paths: bazel-explain.log
  41. depends_on: []
  42. timeout_in_minutes: 60
  43. agents:
  44. queue: builder-linux-x86_64
  45. - group: Zippy
  46. key: zippy
  47. steps:
  48. - id: zippy-kafka-sources-large
  49. label: "Large Zippy Kafka Sources"
  50. depends_on: build-aarch64
  51. # 48h
  52. timeout_in_minutes: 2880
  53. agents:
  54. queue: hetzner-aarch64-8cpu-16gb
  55. plugins:
  56. - ./ci/plugins/mzcompose:
  57. composition: zippy
  58. # Fewer actions because of OoM
  59. args: [--scenario=KafkaSourcesLarge, --actions=12500]
  60. - id: zippy-dataflows-large
  61. label: "Large Zippy w/ complex dataflows"
  62. depends_on: build-aarch64
  63. # 24h
  64. timeout_in_minutes: 1440
  65. agents:
  66. queue: hetzner-aarch64-8cpu-16gb
  67. plugins:
  68. - ./ci/plugins/mzcompose:
  69. composition: zippy
  70. # OoM and out of disk
  71. args: [--scenario=DataflowsLarge, --actions=8000]
  72. - id: zippy-pg-cdc-large
  73. label: "Large Zippy PostgresCdc"
  74. depends_on: build-aarch64
  75. timeout_in_minutes: 2880
  76. agents:
  77. queue: hetzner-aarch64-8cpu-16gb
  78. plugins:
  79. - ./ci/plugins/mzcompose:
  80. composition: zippy
  81. # Runs into upload size limits of Buildkite
  82. # Runs into slowness with new source syntax after a while
  83. args: [--scenario=PostgresCdcLarge, --actions=50000]
  84. - id: zippy-mysql-cdc-large
  85. label: "Large Zippy MySqlCdc"
  86. depends_on: build-aarch64
  87. timeout_in_minutes: 1440
  88. agents:
  89. queue: hetzner-aarch64-8cpu-16gb
  90. plugins:
  91. - ./ci/plugins/mzcompose:
  92. composition: zippy
  93. args: [--scenario=MySqlCdcLarge, --actions=100000, --max-execution-time=4h]
  94. - id: zippy-cluster-replicas-long
  95. label: "Longer Zippy ClusterReplicas"
  96. depends_on: build-aarch64
  97. timeout_in_minutes: 2880
  98. agents:
  99. queue: hetzner-aarch64-8cpu-16gb
  100. plugins:
  101. - ./ci/plugins/mzcompose:
  102. composition: zippy
  103. # Execution times longer than 4h are apparently not feasible at this time due to database-issues#5201
  104. args: [--scenario=ClusterReplicas, --actions=10000, --max-execution-time=4h]
  105. - id: zippy-user-tables-large
  106. label: "Large Zippy w/ user tables"
  107. depends_on: build-aarch64
  108. timeout_in_minutes: 2880
  109. agents:
  110. queue: hetzner-aarch64-8cpu-16gb
  111. plugins:
  112. - ./ci/plugins/mzcompose:
  113. composition: zippy
  114. args: [--scenario=UserTablesLarge, --actions=200000]
  115. - id: zippy-debezium-postgres-long
  116. label: "Longer Zippy Debezium Postgres"
  117. depends_on: build-aarch64
  118. timeout_in_minutes: 1440
  119. agents:
  120. queue: hetzner-aarch64-8cpu-16gb
  121. plugins:
  122. - ./ci/plugins/mzcompose:
  123. composition: zippy
  124. # Runs into upload size limits of Buildkite
  125. args: [--scenario=DebeziumPostgres, --actions=500000, --max-execution-time=4h]
  126. - id: zippy-backup-and-restore-large
  127. label: "Large-scale backup+restore"
  128. depends_on: build-aarch64
  129. timeout_in_minutes: 2880
  130. agents:
  131. queue: hetzner-aarch64-16cpu-32gb
  132. plugins:
  133. - ./ci/plugins/mzcompose:
  134. composition: zippy
  135. # Runs out of disk
  136. args: [--scenario=BackupAndRestoreLarge, --actions=200000]
  137. - id: zippy-kafka-parallel-insert
  138. label: "Longer Zippy Kafka Parallel Insert"
  139. depends_on: build-aarch64
  140. timeout_in_minutes: 1440
  141. agents:
  142. queue: hetzner-aarch64-8cpu-16gb
  143. plugins:
  144. - ./ci/plugins/mzcompose:
  145. composition: zippy
  146. # TODO(def-) Increase number of actions when database-issues#7257 is fixed
  147. args: [--scenario=KafkaParallelInsert, --transaction-isolation=serializable, --actions=50000, --max-execution-time=4h]
  148. - group: Benchmarks
  149. key: benchmark
  150. steps:
  151. - id: feature-benchmark-scale-plus-one
  152. label: "Feature benchmark against 'common-ancestor' with --scale=+1"
  153. depends_on: build-x86_64
  154. timeout_in_minutes: 2880
  155. parallelism: 8
  156. agents:
  157. queue: hetzner-x86-64-dedi-16cpu-64gb
  158. plugins:
  159. - ./ci/plugins/mzcompose:
  160. composition: feature-benchmark
  161. args: [--other-tag=common-ancestor, --scale=+1]
  162. - id: long-parallel-benchmark
  163. label: "Long Parallel Benchmark"
  164. depends_on: build-x86_64
  165. timeout_in_minutes: 1200
  166. agents:
  167. queue: hetzner-x86-64-dedi-8cpu-32gb
  168. plugins:
  169. - ./ci/plugins/mzcompose:
  170. composition: parallel-benchmark
  171. args:
  172. - --other-tag
  173. - common-ancestor
  174. - --load-phase-duration
  175. - 1200
  176. - group: SQLsmith
  177. key: sqlsmith
  178. steps:
  179. - id: sqlsmith-long
  180. label: "Longer SQLsmith"
  181. depends_on: build-aarch64
  182. timeout_in_minutes: 120
  183. agents:
  184. queue: hetzner-aarch64-8cpu-16gb
  185. plugins:
  186. - ./ci/plugins/mzcompose:
  187. composition: sqlsmith
  188. args: [--max-joins=2, --runtime=6000]
  189. - id: sqlsmith-explain-long
  190. label: "Longer SQLsmith explain"
  191. depends_on: build-aarch64
  192. timeout_in_minutes: 120
  193. agents:
  194. queue: hetzner-aarch64-4cpu-8gb
  195. plugins:
  196. - ./ci/plugins/mzcompose:
  197. composition: sqlsmith
  198. args: [--max-joins=15, --explain-only, --runtime=6000]
  199. - id: test-preflight-check-rollback
  200. label: Test with preflight check and rollback
  201. depends_on: []
  202. skip: "TODO(def-): Too complex to adapt for all mzcompose-based tests"
  203. trigger: test
  204. async: false
  205. build:
  206. env:
  207. CI_FINAL_PREFLIGHT_CHECK_VERSION: "${BUILDKITE_TAG}"
  208. CI_FINAL_PREFLIGHT_CHECK_ROLLBACK: 1
  209. - id: nightly-preflight-check-rollback
  210. label: Nightly with preflight check and rollback
  211. depends_on: []
  212. skip: "TODO(def-): Too complex to adapt for all mzcompose-based tests"
  213. trigger: nightly
  214. async: false
  215. build:
  216. env:
  217. CI_FINAL_PREFLIGHT_CHECK_VERSION: "${BUILDKITE_TAG}"
  218. CI_FINAL_PREFLIGHT_CHECK_ROLLBACK: 1
  219. - group: "MySQL: other versions"
  220. key: mysql-versions
  221. steps:
  222. - id: mysql-cdc-5_7
  223. label: "MySQL CDC w/ 5.7"
  224. depends_on: build-x86_64
  225. timeout_in_minutes: 60
  226. agents:
  227. # no matching manifest of MySQL 5.7.x for linux/arm64/v8 in the manifest list entries
  228. # Increased memory usage following new source syntax
  229. queue: hetzner-x86-64-16cpu-32gb
  230. plugins:
  231. - ./ci/plugins/mzcompose:
  232. composition: mysql-cdc
  233. args: [ "--mysql-version=5.7.44" ]
  234. skip: "Fails when restarted"
  235. - id: mysql-cdc-8_0
  236. label: "MySQL CDC w/ 8.0"
  237. depends_on: build-aarch64
  238. timeout_in_minutes: 60
  239. agents:
  240. queue: hetzner-aarch64-4cpu-8gb
  241. plugins:
  242. - ./ci/plugins/mzcompose:
  243. composition: mysql-cdc
  244. args: [ "--mysql-version=8.0.40" ]
  245. - group: "Postgres: other versions"
  246. key: postgres-versions
  247. steps:
  248. - id: pg-cdc-16
  249. label: "Postgres CDC w/ 16"
  250. depends_on: build-aarch64
  251. timeout_in_minutes: 60
  252. inputs: [test/pg-cdc]
  253. plugins:
  254. - ./ci/plugins/mzcompose:
  255. composition: pg-cdc
  256. args: [ "--pg-version=16.6" ]
  257. agents:
  258. queue: hetzner-aarch64-4cpu-8gb
  259. - id: pg-cdc-15
  260. label: "Postgres CDC w/ 15"
  261. depends_on: build-aarch64
  262. timeout_in_minutes: 60
  263. inputs: [test/pg-cdc]
  264. plugins:
  265. - ./ci/plugins/mzcompose:
  266. composition: pg-cdc
  267. args: [ "--pg-version=15.10" ]
  268. agents:
  269. queue: hetzner-aarch64-4cpu-8gb
  270. - id: pg-cdc-14
  271. label: "Postgres CDC w/ 14"
  272. depends_on: build-aarch64
  273. timeout_in_minutes: 60
  274. inputs: [test/pg-cdc]
  275. plugins:
  276. - ./ci/plugins/mzcompose:
  277. composition: pg-cdc
  278. args: [ "--pg-version=14.15" ]
  279. agents:
  280. queue: hetzner-aarch64-4cpu-8gb
  281. - id: pg-cdc-13
  282. label: "Postgres CDC w/ 13"
  283. depends_on: build-aarch64
  284. timeout_in_minutes: 60
  285. inputs: [test/pg-cdc]
  286. plugins:
  287. - ./ci/plugins/mzcompose:
  288. composition: pg-cdc
  289. args: [ "--pg-version=13.18" ]
  290. agents:
  291. queue: hetzner-aarch64-4cpu-8gb
  292. - group: "Platform checks"
  293. key: platform-checks
  294. steps:
  295. - id: checks-restart-cockroach
  296. label: "Checks + restart Cockroach"
  297. depends_on: build-aarch64
  298. timeout_in_minutes: 180
  299. # Sometimes runs into query timeouts or entire test timeouts with parallelism 1, too much state, same in all other platform-checks
  300. parallelism: 3
  301. agents:
  302. # A larger instance is needed due to frequent OOMs, same in all other platform-checks
  303. queue: hetzner-aarch64-8cpu-16gb
  304. plugins:
  305. - ./ci/plugins/mzcompose:
  306. composition: platform-checks
  307. args: [--scenario=RestartCockroach, "--seed=$BUILDKITE_JOB_ID"]
  308. - id: checks-backup-restore-before-manipulate
  309. label: "Checks backup + restore between the two manipulate()"
  310. depends_on: build-aarch64
  311. timeout_in_minutes: 180
  312. parallelism: 3
  313. agents:
  314. queue: hetzner-aarch64-16cpu-32gb
  315. plugins:
  316. - ./ci/plugins/mzcompose:
  317. composition: platform-checks
  318. args: [--scenario=BackupAndRestoreBeforeManipulate, "--seed=$BUILDKITE_JOB_ID"]
  319. - id: checks-backup-restore-after-manipulate
  320. label: "Checks backup + restore after manipulate()"
  321. depends_on: build-aarch64
  322. timeout_in_minutes: 180
  323. parallelism: 3
  324. agents:
  325. queue: hetzner-aarch64-16cpu-32gb
  326. plugins:
  327. - ./ci/plugins/mzcompose:
  328. composition: platform-checks
  329. args: [--scenario=BackupAndRestoreAfterManipulate, "--seed=$BUILDKITE_JOB_ID"]
  330. - id: checks-backup-multi
  331. label: "Checks + multiple backups/restores"
  332. depends_on: build-aarch64
  333. timeout_in_minutes: 180
  334. parallelism: 4
  335. agents:
  336. queue: hetzner-aarch64-16cpu-32gb
  337. plugins:
  338. - ./ci/plugins/mzcompose:
  339. composition: platform-checks
  340. args: [--scenario=BackupAndRestoreMulti, "--seed=$BUILDKITE_JOB_ID"]
  341. - id: checks-preflight-check-continue
  342. label: "Checks preflight-check and continue upgrade"
  343. depends_on: build-aarch64
  344. timeout_in_minutes: 180
  345. parallelism: 3
  346. agents:
  347. queue: hetzner-aarch64-8cpu-16gb
  348. plugins:
  349. - ./ci/plugins/mzcompose:
  350. composition: platform-checks
  351. args: [--scenario=PreflightCheckContinue, "--seed=$BUILDKITE_JOB_ID"]
  352. - id: checks-upgrade-clusterd-compute-first
  353. label: "Platform checks upgrade, restarting compute clusterd first"
  354. depends_on: build-aarch64
  355. timeout_in_minutes: 180
  356. parallelism: 3
  357. agents:
  358. queue: hetzner-aarch64-8cpu-16gb
  359. plugins:
  360. - ./ci/plugins/mzcompose:
  361. composition: platform-checks
  362. args: [--scenario=UpgradeClusterdComputeFirst, "--seed=$BUILDKITE_JOB_ID"]
  363. - id: checks-upgrade-clusterd-compute-last
  364. label: "Platform checks upgrade, restarting compute clusterd last"
  365. depends_on: build-aarch64
  366. timeout_in_minutes: 180
  367. parallelism: 3
  368. agents:
  369. queue: hetzner-aarch64-8cpu-16gb
  370. plugins:
  371. - ./ci/plugins/mzcompose:
  372. composition: platform-checks
  373. args: [--scenario=UpgradeClusterdComputeLast, "--seed=$BUILDKITE_JOB_ID"]
  374. - id: checks-kill-clusterd-storage
  375. label: "Checks + kill storage clusterd"
  376. depends_on: build-aarch64
  377. timeout_in_minutes: 180
  378. parallelism: 3
  379. agents:
  380. queue: hetzner-aarch64-8cpu-16gb
  381. plugins:
  382. - ./ci/plugins/mzcompose:
  383. composition: platform-checks
  384. args: [--scenario=KillClusterdStorage, "--seed=$BUILDKITE_JOB_ID"]
  385. - id: checks-restart-source-postgres
  386. label: "Checks + restart source Postgres"
  387. depends_on: build-aarch64
  388. timeout_in_minutes: 180
  389. agents:
  390. queue: hetzner-aarch64-8cpu-16gb
  391. plugins:
  392. - ./ci/plugins/mzcompose:
  393. composition: platform-checks
  394. args: [--scenario=RestartSourcePostgres, --check=PgCdc, --check=PgCdcNoWait, --check=PgCdcMzNow, --check=SshPg]
  395. - id: checks-restart-clusterd-compute
  396. label: "Checks + restart clusterd compute"
  397. depends_on: build-aarch64
  398. timeout_in_minutes: 180
  399. parallelism: 3
  400. agents:
  401. queue: hetzner-aarch64-8cpu-16gb
  402. plugins:
  403. - ./ci/plugins/mzcompose:
  404. composition: platform-checks
  405. args: [--scenario=RestartClusterdCompute, "--seed=$BUILDKITE_JOB_ID"]
  406. - id: checks-drop-create-default-replica
  407. label: "Checks + DROP/CREATE replica"
  408. depends_on: build-aarch64
  409. timeout_in_minutes: 180
  410. parallelism: 3
  411. agents:
  412. # Seems to require more memory on aarch64
  413. queue: hetzner-aarch64-8cpu-16gb
  414. plugins:
  415. - ./ci/plugins/mzcompose:
  416. composition: platform-checks
  417. args: [--scenario=DropCreateDefaultReplica, "--seed=$BUILDKITE_JOB_ID"]
  418. - id: checks-0dt-restart-entire-mz
  419. label: "Checks 0dt restart of the entire Mz"
  420. depends_on: build-aarch64
  421. timeout_in_minutes: 120
  422. parallelism: 3
  423. agents:
  424. queue: hetzner-aarch64-16cpu-32gb
  425. plugins:
  426. - ./ci/plugins/mzcompose:
  427. composition: platform-checks
  428. args: [--scenario=ZeroDowntimeRestartEntireMz, "--seed=$BUILDKITE_JOB_ID"]
  429. - id: limits
  430. label: "Product limits (finding new limits)"
  431. depends_on: build-aarch64
  432. agents:
  433. queue: hetzner-aarch64-16cpu-32gb
  434. plugins:
  435. - ./ci/plugins/mzcompose:
  436. composition: limits
  437. run: main
  438. args: [--find-limit]
  439. timeout_in_minutes: 3600
  440. parallelism: 20
  441. - group: Large Scale Ingestions
  442. key: large-scale-ingestions
  443. steps:
  444. - id: mysql-cdc-large-scale
  445. label: MySQL CDC large scale ingestion
  446. depends_on: build-aarch64
  447. timeout_in_minutes: 3600
  448. plugins:
  449. - ./ci/plugins/mzcompose:
  450. composition: mysql-cdc
  451. run: large-scale
  452. agents:
  453. queue: hetzner-x86-64-dedi-48cpu-192gb # 1 TB disk
  454. - id: pg-cdc-large-scale
  455. label: Postgres CDC large scale ingestion
  456. depends_on: build-aarch64
  457. timeout_in_minutes: 3600
  458. plugins:
  459. - ./ci/plugins/mzcompose:
  460. composition: pg-cdc
  461. run: large-scale
  462. agents:
  463. queue: hetzner-x86-64-dedi-48cpu-192gb # 1 TB disk
  464. - id: upsert-large-scale
  465. label: Upsert large scale ingestion
  466. depends_on: build-aarch64
  467. timeout_in_minutes: 3600
  468. plugins:
  469. - ./ci/plugins/mzcompose:
  470. composition: upsert
  471. run: large-scale
  472. agents:
  473. queue: hetzner-x86-64-dedi-48cpu-192gb # 1 TB disk