mirror of
https://github.com/dashpay/dash.git
synced 2024-12-25 12:02:48 +01:00
f8e425b437
fa05f44893d228f672f39436d0cb6b3376f81ac2 ci: Upgrade most ci configs to focal (MarcoFalke) fad67208914e5a74b64f4cc018368902ef3a2e9b doc: move doc to ci readme (MarcoFalke) fa880773b425fcd292ed7669d237ee3151a15bc6 ci: Have one config run in xenial to test against python3.5 (MarcoFalke) fa6ddb2fa167df52f59cb9eaabed48315ddcdb2e travis: Always run multiprocess build (MarcoFalke) Pull request description: Generally developers compile with recent compilers, so bumping the ci configs to a recent OS should be uncontroversial. Older OSes (especially with compiler sanitizers) need workarounds that can be dropped by running on a more recent OS. This pull changes the asan sanitizer and the experimental multiprocess build to use focal. Also, it runs the no_wallet config on xenial to test against python 3.5, according to `doc/dependencies.md`. Finally, all configs that mimic gitian (win and mac) will stay at bionic. ACKs for top commit: Sjors: ACK fa05f44893d228f672f39436d0cb6b3376f81ac2, assuming Travis passes hebasto: ACK fa05f44893d228f672f39436d0cb6b3376f81ac2 Tree-SHA512: 55ec56c71ba2280d27c1a8856a1e6c310b1fbf469d5a8a1dde228063e3892e1dd1e51408ecff7a3d77ac2ae018daa9e9bbbb60598cdeaab8c32a146b11b3e7c4
66 lines
2.5 KiB
Markdown
66 lines
2.5 KiB
Markdown
## CI Scripts
|
|
|
|
This directory contains scripts for each build step in each build stage.
|
|
|
|
### Running a Stage Locally
|
|
|
|
Be aware that the tests will be built and run in-place, so please run at your own risk.
|
|
If the repository is not a fresh git clone, you might have to clean files from previous builds or test runs first.
|
|
|
|
The ci needs to perform various sysadmin tasks such as installing packages or writing to the user's home directory.
|
|
While most of the actions are done inside a docker container, this is not possible for all. Thus, cache directories,
|
|
such as the depends cache, previous release binaries, or ccache, are mounted as read-write into the docker container. While it should be fine to run
|
|
the ci system locally on you development box, the ci scripts can generally be assumed to have received less review and
|
|
testing compared to other parts of the codebase. If you want to keep the work tree clean, you might want to run the ci
|
|
system in a virtual machine with a Linux operating system of your choice.
|
|
|
|
To allow for a wide range of tested environments, but also ensure reproducibility to some extent, the test stage
|
|
requires `docker` to be installed. To install all requirements on Ubuntu, run
|
|
|
|
```
|
|
sudo apt install docker.io bash
|
|
```
|
|
|
|
To run the default test stage,
|
|
|
|
```
|
|
./ci/test_run_all.sh
|
|
```
|
|
|
|
To run the test stage with a specific configuration,
|
|
|
|
```
|
|
FILE_ENV="./ci/test/00_setup_env_arm.sh" ./ci/test_run_all.sh
|
|
```
|
|
|
|
### Configurations
|
|
|
|
The test files (`FILE_ENV`) are constructed to test a wide range of
|
|
configurations, rather than a single pass/fail. This helps to catch build
|
|
failures and logic errors that present on platforms other than the ones the
|
|
author has tested.
|
|
|
|
Some builders use the dependency-generator in `./depends`, rather than using
|
|
the system package manager to install build dependencies. This guarantees that
|
|
the tester is using the same versions as the release builds, which also use
|
|
`./depends`.
|
|
|
|
If no `FILE_ENV` has been specified or values are left out, `00_setup_env.sh`
|
|
is used as the default configuration with fallback values.
|
|
|
|
It is also possible to force a specific configuration without modifying the
|
|
file. For example,
|
|
|
|
```
|
|
MAKEJOBS="-j1" FILE_ENV="./ci/test/00_setup_env_arm.sh" ./ci/test_run_all.sh
|
|
```
|
|
|
|
The files starting with `0n` (`n` greater than 0) are the scripts that are run
|
|
in order.
|
|
|
|
### Cache
|
|
|
|
In order to avoid rebuilding all dependencies for each build, the binaries are
|
|
cached and re-used when possible. Changes in the dependency-generator will
|
|
trigger cache-invalidation and rebuilds as necessary.
|