Files
holger krekel 6378533b6a ci: speedup lint job and the Rust test builds
Since #8350 (2026-09-09) deltachat-jsonrpc-bindings build-depends
on deltachat-jsonrpc, so clippy, nextest and the doctests,
which select the whole workspace, compiled core
and its whole dependency tree a second time for the host.
The lint job also checked every dependency twice, once per panic strategy,
and repeated clippy's checks in a separate all-features `cargo check`.

With a warm cache on 4 CPUs on my machine, the lint job drops
from 150 to 60 seconds and the tests build
from 100 to 75 seconds.
Peak memory falls for lint from
5.1 to 3.5 GiB and for tests
7.5 to 5.4 GiB.
2026-10-06 21:17:34 +02:00
..
2023-01-20 16:53:21 +00:00
2022-07-07 00:31:57 +00:00

Continuous Integration Scripts for Delta Chat

Continuous Integration, run through GitHub Actions and an own build machine.

Description of scripts

  • clippy.sh runs cargo clippy for all Rust code in the project.

  • deny.sh runs cargo deny for all Rust code in the project.

  • codespell.sh spellchecks the source code using codespell tool.

  • ../.github/workflows contains jobs run by GitHub Actions.

  • run-python-test.sh runs CFFI Python tests.

  • run-rpc-test.sh runs JSON-RPC Python tests.

  • make-python-testenv.sh creates a local python test development environment with CFFI bindings. Reusing the same environment is faster than running run-python-test.sh which always recreates environment from scratch and runs additional lints.

  • make-rpc-testenv.sh creates a local python development environment with JSON-RPC bindings, i.e. deltachat-rpc-client and deltachat-rpc-server.

  • remote_tests_python.sh rsyncs to a build machine and runs JSON-RPC Python tests remotely on the build machine.

  • remote_tests_rust.sh rsyncs to the build machine and runs Rust tests remotely on the build machine.

  • run-doxygen.sh generates C-docs which are then uploaded to https://c.delta.chat/

  • run_all.sh builds Python wheels

  • android-rpc-server.sh compiles binaries of deltachat-rpc-server using Android NDK.

  • future-sizes.sh prints the sizes of the largest Futures. This can be helpful because Async Rust can lead to huge futures, increasing RAM usage and compilation times.

Triggering runs on the build machine locally (fast!)

There is experimental support for triggering a remote Python or Rust test run from your local checkout/branch. You will need to be authorized to login to the build machine (ask your friendly sysadmin on #deltachat Libera Chat) to type:

scripts/manual_remote_tests.sh rust
scripts/manual_remote_tests.sh python

This will rsync your current checkout to the remote build machine (no need to commit before) and then run either rust or python tests.