tests.yml 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621
  1. name: Tests
  2. on:
  3. push:
  4. branches: ["develop", "release-*"]
  5. pull_request:
  6. merge_group:
  7. workflow_dispatch:
  8. concurrency:
  9. group: ${{ github.workflow }}-${{ github.ref }}
  10. cancel-in-progress: true
  11. jobs:
  12. # Job to detect what has changed so we don't run e.g. Rust checks on PRs that
  13. # don't modify Rust code.
  14. changes:
  15. runs-on: ubuntu-latest
  16. outputs:
  17. rust: ${{ !startsWith(github.ref, 'refs/pull/') || steps.filter.outputs.rust }}
  18. steps:
  19. - uses: dorny/paths-filter@v2
  20. id: filter
  21. # We only check on PRs
  22. if: startsWith(github.ref, 'refs/pull/')
  23. with:
  24. filters: |
  25. rust:
  26. - 'rust/**'
  27. - 'Cargo.toml'
  28. - 'Cargo.lock'
  29. check-sampleconfig:
  30. runs-on: ubuntu-latest
  31. steps:
  32. - uses: actions/checkout@v3
  33. - uses: matrix-org/setup-python-poetry@v1
  34. with:
  35. python-version: "3.x"
  36. poetry-version: "1.3.2"
  37. extras: "all"
  38. - run: poetry run scripts-dev/generate_sample_config.sh --check
  39. - run: poetry run scripts-dev/config-lint.sh
  40. check-schema-delta:
  41. runs-on: ubuntu-latest
  42. steps:
  43. - uses: actions/checkout@v3
  44. - uses: actions/setup-python@v4
  45. with:
  46. python-version: "3.x"
  47. - run: "pip install 'click==8.1.1' 'GitPython>=3.1.20'"
  48. - run: scripts-dev/check_schema_delta.py --force-colors
  49. check-lockfile:
  50. runs-on: ubuntu-latest
  51. steps:
  52. - uses: actions/checkout@v3
  53. - uses: actions/setup-python@v4
  54. with:
  55. python-version: "3.x"
  56. - run: .ci/scripts/check_lockfile.py
  57. lint:
  58. uses: "matrix-org/backend-meta/.github/workflows/python-poetry-ci.yml@v2"
  59. with:
  60. typechecking-extras: "all"
  61. lint-crlf:
  62. runs-on: ubuntu-latest
  63. steps:
  64. - uses: actions/checkout@v3
  65. - name: Check line endings
  66. run: scripts-dev/check_line_terminators.sh
  67. lint-newsfile:
  68. if: ${{ (github.base_ref == 'develop' || contains(github.base_ref, 'release-')) && github.actor != 'dependabot[bot]' }}
  69. runs-on: ubuntu-latest
  70. steps:
  71. - uses: actions/checkout@v3
  72. with:
  73. ref: ${{ github.event.pull_request.head.sha }}
  74. fetch-depth: 0
  75. - uses: actions/setup-python@v4
  76. with:
  77. python-version: "3.x"
  78. - run: "pip install 'towncrier>=18.6.0rc1'"
  79. - run: scripts-dev/check-newsfragment.sh
  80. env:
  81. PULL_REQUEST_NUMBER: ${{ github.event.number }}
  82. lint-pydantic:
  83. runs-on: ubuntu-latest
  84. steps:
  85. - uses: actions/checkout@v3
  86. with:
  87. ref: ${{ github.event.pull_request.head.sha }}
  88. - uses: matrix-org/setup-python-poetry@v1
  89. with:
  90. poetry-version: "1.3.2"
  91. extras: "all"
  92. - run: poetry run scripts-dev/check_pydantic_models.py
  93. lint-clippy:
  94. runs-on: ubuntu-latest
  95. needs: changes
  96. if: ${{ needs.changes.outputs.rust == 'true' }}
  97. steps:
  98. - uses: actions/checkout@v3
  99. - name: Install Rust
  100. # There don't seem to be versioned releases of this action per se: for each rust
  101. # version there is a branch which gets constantly rebased on top of master.
  102. # We pin to a specific commit for paranoia's sake.
  103. uses: dtolnay/rust-toolchain@e12eda571dc9a5ee5d58eecf4738ec291c66f295
  104. with:
  105. toolchain: 1.58.1
  106. components: clippy
  107. - uses: Swatinem/rust-cache@v2
  108. - run: cargo clippy -- -D warnings
  109. # We also lint against a nightly rustc so that we can lint the benchmark
  110. # suite, which requires a nightly compiler.
  111. lint-clippy-nightly:
  112. runs-on: ubuntu-latest
  113. needs: changes
  114. if: ${{ needs.changes.outputs.rust == 'true' }}
  115. steps:
  116. - uses: actions/checkout@v3
  117. - name: Install Rust
  118. # There don't seem to be versioned releases of this action per se: for each rust
  119. # version there is a branch which gets constantly rebased on top of master.
  120. # We pin to a specific commit for paranoia's sake.
  121. uses: dtolnay/rust-toolchain@e12eda571dc9a5ee5d58eecf4738ec291c66f295
  122. with:
  123. toolchain: nightly-2022-12-01
  124. components: clippy
  125. - uses: Swatinem/rust-cache@v2
  126. - run: cargo clippy --all-features -- -D warnings
  127. lint-rustfmt:
  128. runs-on: ubuntu-latest
  129. needs: changes
  130. if: ${{ needs.changes.outputs.rust == 'true' }}
  131. steps:
  132. - uses: actions/checkout@v3
  133. - name: Install Rust
  134. # There don't seem to be versioned releases of this action per se: for each rust
  135. # version there is a branch which gets constantly rebased on top of master.
  136. # We pin to a specific commit for paranoia's sake.
  137. uses: dtolnay/rust-toolchain@e12eda571dc9a5ee5d58eecf4738ec291c66f295
  138. with:
  139. # We use nightly so that it correctly groups together imports
  140. toolchain: nightly-2022-12-01
  141. components: rustfmt
  142. - uses: Swatinem/rust-cache@v2
  143. - run: cargo fmt --check
  144. # Dummy step to gate other tests on without repeating the whole list
  145. linting-done:
  146. if: ${{ !cancelled() }} # Run this even if prior jobs were skipped
  147. needs:
  148. - lint
  149. - lint-crlf
  150. - lint-newsfile
  151. - lint-pydantic
  152. - check-sampleconfig
  153. - check-schema-delta
  154. - check-lockfile
  155. - lint-clippy
  156. - lint-rustfmt
  157. runs-on: ubuntu-latest
  158. steps:
  159. - run: "true"
  160. calculate-test-jobs:
  161. if: ${{ !cancelled() && !failure() }} # Allow previous steps to be skipped, but not fail
  162. needs: linting-done
  163. runs-on: ubuntu-latest
  164. steps:
  165. - uses: actions/checkout@v3
  166. - uses: actions/setup-python@v4
  167. with:
  168. python-version: "3.x"
  169. - id: get-matrix
  170. run: .ci/scripts/calculate_jobs.py
  171. outputs:
  172. trial_test_matrix: ${{ steps.get-matrix.outputs.trial_test_matrix }}
  173. sytest_test_matrix: ${{ steps.get-matrix.outputs.sytest_test_matrix }}
  174. trial:
  175. if: ${{ !cancelled() && !failure() }} # Allow previous steps to be skipped, but not fail
  176. needs: calculate-test-jobs
  177. runs-on: ubuntu-latest
  178. strategy:
  179. matrix:
  180. job: ${{ fromJson(needs.calculate-test-jobs.outputs.trial_test_matrix) }}
  181. steps:
  182. - uses: actions/checkout@v3
  183. - run: sudo apt-get -qq install xmlsec1
  184. - name: Set up PostgreSQL ${{ matrix.job.postgres-version }}
  185. if: ${{ matrix.job.postgres-version }}
  186. # 1. Mount postgres data files onto a tmpfs in-memory filesystem to reduce overhead of docker's overlayfs layer.
  187. # 2. Expose the unix socket for postgres. This removes latency of using docker-proxy for connections.
  188. run: |
  189. docker run -d -p 5432:5432 \
  190. --tmpfs /var/lib/postgres:rw,size=6144m \
  191. --mount 'type=bind,src=/var/run/postgresql,dst=/var/run/postgresql' \
  192. -e POSTGRES_PASSWORD=postgres \
  193. -e POSTGRES_INITDB_ARGS="--lc-collate C --lc-ctype C --encoding UTF8" \
  194. postgres:${{ matrix.job.postgres-version }}
  195. - name: Install Rust
  196. # There don't seem to be versioned releases of this action per se: for each rust
  197. # version there is a branch which gets constantly rebased on top of master.
  198. # We pin to a specific commit for paranoia's sake.
  199. uses: dtolnay/rust-toolchain@e12eda571dc9a5ee5d58eecf4738ec291c66f295
  200. with:
  201. toolchain: 1.58.1
  202. - uses: Swatinem/rust-cache@v2
  203. - uses: matrix-org/setup-python-poetry@v1
  204. with:
  205. python-version: ${{ matrix.job.python-version }}
  206. poetry-version: "1.3.2"
  207. extras: ${{ matrix.job.extras }}
  208. - name: Await PostgreSQL
  209. if: ${{ matrix.job.postgres-version }}
  210. timeout-minutes: 2
  211. run: until pg_isready -h localhost; do sleep 1; done
  212. - run: poetry run trial --jobs=6 tests
  213. env:
  214. SYNAPSE_POSTGRES: ${{ matrix.job.database == 'postgres' || '' }}
  215. SYNAPSE_POSTGRES_HOST: /var/run/postgresql
  216. SYNAPSE_POSTGRES_USER: postgres
  217. SYNAPSE_POSTGRES_PASSWORD: postgres
  218. - name: Dump logs
  219. # Logs are most useful when the command fails, always include them.
  220. if: ${{ always() }}
  221. # Note: Dumps to workflow logs instead of using actions/upload-artifact
  222. # This keeps logs colocated with failing jobs
  223. # It also ignores find's exit code; this is a best effort affair
  224. run: >-
  225. find _trial_temp -name '*.log'
  226. -exec echo "::group::{}" \;
  227. -exec cat {} \;
  228. -exec echo "::endgroup::" \;
  229. || true
  230. trial-olddeps:
  231. # Note: sqlite only; no postgres
  232. if: ${{ !cancelled() && !failure() }} # Allow previous steps to be skipped, but not fail
  233. needs: linting-done
  234. runs-on: ubuntu-20.04
  235. steps:
  236. - uses: actions/checkout@v3
  237. - name: Install Rust
  238. # There don't seem to be versioned releases of this action per se: for each rust
  239. # version there is a branch which gets constantly rebased on top of master.
  240. # We pin to a specific commit for paranoia's sake.
  241. uses: dtolnay/rust-toolchain@e12eda571dc9a5ee5d58eecf4738ec291c66f295
  242. with:
  243. toolchain: 1.58.1
  244. - uses: Swatinem/rust-cache@v2
  245. # There aren't wheels for some of the older deps, so we need to install
  246. # their build dependencies
  247. - run: |
  248. sudo apt-get -qq install build-essential libffi-dev python-dev \
  249. libxml2-dev libxslt-dev xmlsec1 zlib1g-dev libjpeg-dev libwebp-dev
  250. - uses: actions/setup-python@v4
  251. with:
  252. python-version: '3.7'
  253. # Calculating the old-deps actually takes a bunch of time, so we cache the
  254. # pyproject.toml / poetry.lock. We need to cache pyproject.toml as
  255. # otherwise the `poetry install` step will error due to the poetry.lock
  256. # file being outdated.
  257. #
  258. # This caches the output of `Prepare old deps`, which should generate the
  259. # same `pyproject.toml` and `poetry.lock` for a given `pyproject.toml` input.
  260. - uses: actions/cache@v3
  261. id: cache-poetry-old-deps
  262. name: Cache poetry.lock
  263. with:
  264. path: |
  265. poetry.lock
  266. pyproject.toml
  267. key: poetry-old-deps2-${{ hashFiles('pyproject.toml') }}
  268. - name: Prepare old deps
  269. if: steps.cache-poetry-old-deps.outputs.cache-hit != 'true'
  270. run: .ci/scripts/prepare_old_deps.sh
  271. # We only now install poetry so that `setup-python-poetry` caches the
  272. # right poetry.lock's dependencies.
  273. - uses: matrix-org/setup-python-poetry@v1
  274. with:
  275. python-version: '3.7'
  276. poetry-version: "1.3.2"
  277. extras: "all test"
  278. - run: poetry run trial -j6 tests
  279. - name: Dump logs
  280. # Logs are most useful when the command fails, always include them.
  281. if: ${{ always() }}
  282. # Note: Dumps to workflow logs instead of using actions/upload-artifact
  283. # This keeps logs colocated with failing jobs
  284. # It also ignores find's exit code; this is a best effort affair
  285. run: >-
  286. find _trial_temp -name '*.log'
  287. -exec echo "::group::{}" \;
  288. -exec cat {} \;
  289. -exec echo "::endgroup::" \;
  290. || true
  291. trial-pypy:
  292. # Very slow; only run if the branch name includes 'pypy'
  293. # Note: sqlite only; no postgres. Completely untested since poetry move.
  294. if: ${{ contains(github.ref, 'pypy') && !failure() && !cancelled() }}
  295. needs: linting-done
  296. runs-on: ubuntu-latest
  297. strategy:
  298. matrix:
  299. python-version: ["pypy-3.7"]
  300. extras: ["all"]
  301. steps:
  302. - uses: actions/checkout@v3
  303. # Install libs necessary for PyPy to build binary wheels for dependencies
  304. - run: sudo apt-get -qq install xmlsec1 libxml2-dev libxslt-dev
  305. - uses: matrix-org/setup-python-poetry@v1
  306. with:
  307. python-version: ${{ matrix.python-version }}
  308. poetry-version: "1.3.2"
  309. extras: ${{ matrix.extras }}
  310. - run: poetry run trial --jobs=2 tests
  311. - name: Dump logs
  312. # Logs are most useful when the command fails, always include them.
  313. if: ${{ always() }}
  314. # Note: Dumps to workflow logs instead of using actions/upload-artifact
  315. # This keeps logs colocated with failing jobs
  316. # It also ignores find's exit code; this is a best effort affair
  317. run: >-
  318. find _trial_temp -name '*.log'
  319. -exec echo "::group::{}" \;
  320. -exec cat {} \;
  321. -exec echo "::endgroup::" \;
  322. || true
  323. sytest:
  324. if: ${{ !failure() && !cancelled() }}
  325. needs: calculate-test-jobs
  326. runs-on: ubuntu-latest
  327. container:
  328. image: matrixdotorg/sytest-synapse:${{ matrix.job.sytest-tag }}
  329. volumes:
  330. - ${{ github.workspace }}:/src
  331. env:
  332. SYTEST_BRANCH: ${{ github.head_ref }}
  333. POSTGRES: ${{ matrix.job.postgres && 1}}
  334. MULTI_POSTGRES: ${{ (matrix.job.postgres == 'multi-postgres') && 1}}
  335. ASYNCIO_REACTOR: ${{ (matrix.job.reactor == 'asyncio') && 1 }}
  336. WORKERS: ${{ matrix.job.workers && 1 }}
  337. BLACKLIST: ${{ matrix.job.workers && 'synapse-blacklist-with-workers' }}
  338. TOP: ${{ github.workspace }}
  339. strategy:
  340. fail-fast: false
  341. matrix:
  342. job: ${{ fromJson(needs.calculate-test-jobs.outputs.sytest_test_matrix) }}
  343. steps:
  344. - uses: actions/checkout@v3
  345. - name: Prepare test blacklist
  346. run: cat sytest-blacklist .ci/worker-blacklist > synapse-blacklist-with-workers
  347. - name: Install Rust
  348. # There don't seem to be versioned releases of this action per se: for each rust
  349. # version there is a branch which gets constantly rebased on top of master.
  350. # We pin to a specific commit for paranoia's sake.
  351. uses: dtolnay/rust-toolchain@e12eda571dc9a5ee5d58eecf4738ec291c66f295
  352. with:
  353. toolchain: 1.58.1
  354. - uses: Swatinem/rust-cache@v2
  355. - name: Run SyTest
  356. run: /bootstrap.sh synapse
  357. working-directory: /src
  358. - name: Summarise results.tap
  359. if: ${{ always() }}
  360. run: /sytest/scripts/tap_to_gha.pl /logs/results.tap
  361. - name: Upload SyTest logs
  362. uses: actions/upload-artifact@v3
  363. if: ${{ always() }}
  364. with:
  365. name: Sytest Logs - ${{ job.status }} - (${{ join(matrix.job.*, ', ') }})
  366. path: |
  367. /logs/results.tap
  368. /logs/**/*.log*
  369. export-data:
  370. if: ${{ !failure() && !cancelled() }} # Allow previous steps to be skipped, but not fail
  371. needs: [linting-done, portdb]
  372. runs-on: ubuntu-latest
  373. env:
  374. TOP: ${{ github.workspace }}
  375. services:
  376. postgres:
  377. image: postgres
  378. ports:
  379. - 5432:5432
  380. env:
  381. POSTGRES_PASSWORD: "postgres"
  382. POSTGRES_INITDB_ARGS: "--lc-collate C --lc-ctype C --encoding UTF8"
  383. options: >-
  384. --health-cmd pg_isready
  385. --health-interval 10s
  386. --health-timeout 5s
  387. --health-retries 5
  388. steps:
  389. - uses: actions/checkout@v3
  390. - run: sudo apt-get -qq install xmlsec1 postgresql-client
  391. - uses: matrix-org/setup-python-poetry@v1
  392. with:
  393. poetry-version: "1.3.2"
  394. extras: "postgres"
  395. - run: .ci/scripts/test_export_data_command.sh
  396. env:
  397. PGHOST: localhost
  398. PGUSER: postgres
  399. PGPASSWORD: postgres
  400. PGDATABASE: postgres
  401. portdb:
  402. if: ${{ !failure() && !cancelled() }} # Allow previous steps to be skipped, but not fail
  403. needs: linting-done
  404. runs-on: ubuntu-latest
  405. strategy:
  406. matrix:
  407. include:
  408. - python-version: "3.7"
  409. postgres-version: "11"
  410. - python-version: "3.11"
  411. postgres-version: "15"
  412. services:
  413. postgres:
  414. image: postgres:${{ matrix.postgres-version }}
  415. ports:
  416. - 5432:5432
  417. env:
  418. POSTGRES_PASSWORD: "postgres"
  419. POSTGRES_INITDB_ARGS: "--lc-collate C --lc-ctype C --encoding UTF8"
  420. options: >-
  421. --health-cmd pg_isready
  422. --health-interval 10s
  423. --health-timeout 5s
  424. --health-retries 5
  425. steps:
  426. - uses: actions/checkout@v3
  427. - name: Add PostgreSQL apt repository
  428. # We need a version of pg_dump that can handle the version of
  429. # PostgreSQL being tested against. The Ubuntu package repository lags
  430. # behind new releases, so we have to use the PostreSQL apt repository.
  431. # Steps taken from https://www.postgresql.org/download/linux/ubuntu/
  432. run: |
  433. sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
  434. wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
  435. sudo apt-get update
  436. - run: sudo apt-get -qq install xmlsec1 postgresql-client
  437. - uses: matrix-org/setup-python-poetry@v1
  438. with:
  439. python-version: ${{ matrix.python-version }}
  440. poetry-version: "1.3.2"
  441. extras: "postgres"
  442. - run: .ci/scripts/test_synapse_port_db.sh
  443. id: run_tester_script
  444. env:
  445. PGHOST: localhost
  446. PGUSER: postgres
  447. PGPASSWORD: postgres
  448. PGDATABASE: postgres
  449. - name: "Upload schema differences"
  450. uses: actions/upload-artifact@v3
  451. if: ${{ failure() && !cancelled() && steps.run_tester_script.outcome == 'failure' }}
  452. with:
  453. name: Schema dumps
  454. path: |
  455. unported.sql
  456. ported.sql
  457. schema_diff
  458. complement:
  459. if: "${{ !failure() && !cancelled() }}"
  460. needs: linting-done
  461. runs-on: ubuntu-latest
  462. strategy:
  463. fail-fast: false
  464. matrix:
  465. include:
  466. - arrangement: monolith
  467. database: SQLite
  468. - arrangement: monolith
  469. database: Postgres
  470. - arrangement: workers
  471. database: Postgres
  472. steps:
  473. - name: Run actions/checkout@v3 for synapse
  474. uses: actions/checkout@v3
  475. with:
  476. path: synapse
  477. - name: Install Rust
  478. # There don't seem to be versioned releases of this action per se: for each rust
  479. # version there is a branch which gets constantly rebased on top of master.
  480. # We pin to a specific commit for paranoia's sake.
  481. uses: dtolnay/rust-toolchain@e12eda571dc9a5ee5d58eecf4738ec291c66f295
  482. with:
  483. toolchain: 1.58.1
  484. - uses: Swatinem/rust-cache@v2
  485. - name: Prepare Complement's Prerequisites
  486. run: synapse/.ci/scripts/setup_complement_prerequisites.sh
  487. - run: |
  488. set -o pipefail
  489. COMPLEMENT_DIR=`pwd`/complement synapse/scripts-dev/complement.sh -json 2>&1 | synapse/.ci/scripts/gotestfmt
  490. shell: bash
  491. env:
  492. POSTGRES: ${{ (matrix.database == 'Postgres') && 1 || '' }}
  493. WORKERS: ${{ (matrix.arrangement == 'workers') && 1 || '' }}
  494. name: Run Complement Tests
  495. cargo-test:
  496. if: ${{ needs.changes.outputs.rust == 'true' }}
  497. runs-on: ubuntu-latest
  498. needs:
  499. - linting-done
  500. - changes
  501. steps:
  502. - uses: actions/checkout@v3
  503. - name: Install Rust
  504. # There don't seem to be versioned releases of this action per se: for each rust
  505. # version there is a branch which gets constantly rebased on top of master.
  506. # We pin to a specific commit for paranoia's sake.
  507. uses: dtolnay/rust-toolchain@e12eda571dc9a5ee5d58eecf4738ec291c66f295
  508. with:
  509. toolchain: 1.58.1
  510. - uses: Swatinem/rust-cache@v2
  511. - run: cargo test
  512. # We want to ensure that the cargo benchmarks still compile, which requires a
  513. # nightly compiler.
  514. cargo-bench:
  515. if: ${{ needs.changes.outputs.rust == 'true' }}
  516. runs-on: ubuntu-latest
  517. needs:
  518. - linting-done
  519. - changes
  520. steps:
  521. - uses: actions/checkout@v3
  522. - name: Install Rust
  523. # There don't seem to be versioned releases of this action per se: for each rust
  524. # version there is a branch which gets constantly rebased on top of master.
  525. # We pin to a specific commit for paranoia's sake.
  526. uses: dtolnay/rust-toolchain@e12eda571dc9a5ee5d58eecf4738ec291c66f295
  527. with:
  528. toolchain: nightly-2022-12-01
  529. - uses: Swatinem/rust-cache@v2
  530. - run: cargo bench --no-run
  531. # a job which marks all the other jobs as complete, thus allowing PRs to be merged.
  532. tests-done:
  533. if: ${{ always() }}
  534. needs:
  535. - trial
  536. - trial-olddeps
  537. - sytest
  538. - export-data
  539. - portdb
  540. - complement
  541. - cargo-test
  542. - cargo-bench
  543. runs-on: ubuntu-latest
  544. steps:
  545. - uses: matrix-org/done-action@v2
  546. with:
  547. needs: ${{ toJSON(needs) }}
  548. # The newsfile lint may be skipped on non PR builds
  549. # Cargo test is skipped if there is no changes on Rust code
  550. skippable: |
  551. lint-newsfile
  552. cargo-test
  553. cargo-bench