Skip to content
Bitcoin Roots

v30.3-roots.1 · Commit 8: [PATCH 08/68] ci: restore Roots assurance on Core 30.3 interfaces

ci/README.md

Before: ci/README.md · After: ci/README.md

File metadata
index 8e69fa568c559ed3d4f6ba64a47fb9aa3dc94b41..16cb10c6ccaa0839e5f10aa00f28a0f1881abf5e 100644

Download original patch · Release notes

Diff rows 1–82 of 82. Line numbers refer to the original before/after files.

+ Added− RemovedUnmarked lines are context.

Scroll the code area horizontally to read long lines. Before is on the left; after is on the right. Unified view fits narrow screens more easily.

ci/README.md CHANGED
@@ -49,32 +49,53 @@ env -i HOME="$HOME" PATH="$PATH" USER="$USER" bash -c 'MAKEJOBS="-j1" FILE_ENV="
49
  The files starting with `0n` (`n` greater than 0) are the scripts that are run
50
  in order.
51
 
52
- ## Cache
53
-
54
- In order to avoid rebuilding all dependencies for each build, the binaries are
55
- cached and reused when possible. Changes in the dependency-generator will
56
- trigger cache-invalidation and rebuilds as necessary.
57
-
58
- ## Configuring a repository for CI
59
-
60
- ### Primary repository
61
-
62
- To configure the primary repository, follow these steps:
63
-
64
- 1. Register with [WarpBuild](https://www.warpbuild.com/) and purchase runners.
65
- 2. Install the WarpBuild GitHub app against the GitHub organization.
66
- 3. Enable organisation-level runners to be used in public repositories:
67
- 1. `Org settings -> Actions -> Runner Groups -> Default -> Allow public repos`
68
- 4. Permit the following actions to run:
69
- 1. cirruslabs/cache/restore@\*
70
- 1. cirruslabs/cache/save@\*
71
- 1. docker/setup-buildx-action@\*
72
- 1. actions/github-script@\*
73
-
74
- ### Forked repositories
75
-
76
- When used in a fork the CI will run on GitHub's free hosted runners by default.
77
- In this case, due to GitHub's 10GB-per-repo cache size limitations caches will be frequently evicted and missed, but the workflows will run (slowly).
78
-
79
- It is also possible to use your own WarpBuild Runners in your own fork with an appropriate patch to the `REPO_USE_WARP_RUNNERS` variable in ../.github/workflows/ci.yml
80
- NB that WarpBuild Runners only work at an organisation level, therefore in order to use your own WarpBuild Runners, *the fork must be within your own organisation*.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  The files starting with `0n` (`n` greater than 0) are the scripts that are run
50
  in order.
51
 
52
+ ## GitHub Actions policy
53
+
54
+ Bitcoin Roots uses a smaller, risk-selected pull-request matrix rather than
55
+ running every Bitcoin Core CI configuration on every change:
56
+
57
+ | Workflow | Events | Purpose |
58
+ | --- | --- | --- |
59
+ | `.github/workflows/ci.yml` | pull request | Required lint plus path-selected build and test coverage. |
60
+ | `.github/workflows/nightly.yml` | schedule, manual dispatch, reusable call | Expensive sanitizer, fuzz, compatibility, and platform assurance. |
61
+ | `.github/workflows/release.yml` | Roots release tags, manual dispatch | Validate a canonical release tag and produce the five release packages and portable patch. |
62
+
63
+ These repository workflows are kept in every canonical Roots branch and release
64
+ tag so a PR tests the code it proposes. They are hosting automation, however,
65
+ so `ci/release/create-patch-series.sh` excludes `.github/**` from the
66
+ downloadable patch applied on top of Bitcoin Core. Source tests and CI support
67
+ under `test/**`, `src/**/test/**`, and `ci/**` remain in that patch.
68
+
69
+ ### Pull-request selection
70
+
71
+ `ci/change-classifier.py` reads the complete PR file list using
72
+ `ci/change-classifier-policy.json`. Mixed changes receive the union of their
73
+ coverage. Incomplete, truncated, empty, ambiguous, and unknown inputs fail open
74
+ to broad coverage.
75
+
76
+ | Change | Automatic coverage in addition to lint |
77
+ | --- | --- |
78
+ | Documentation only | No build job. |
79
+ | Branding or GUI | GUI/resource build and Qt tests. |
80
+ | Wallet | Compatibility, sanitizers, fuzz, and platform smoke tests. |
81
+ | General C/C++ | Sanitizers, native Linux fuzz, ARM32, native kernel/chainstate, Windows, and both native macOS architectures. |
82
+ | Critical, build, CI, or unknown | Broad coverage, including GUI and previous-release compatibility. |
83
+
84
+ The stable `required result` job is the branch-protection check to require. It
85
+ fails if classification, lint, or any selected job fails.
86
+
87
+ Maintainers can add coverage with `ci:sanitizers`, `ci:fuzz`,
88
+ `ci:compat`, `ci:platforms`, or `ci:full` PR labels. Labels add tests;
89
+ they never suppress automatic coverage.
90
+
91
+ ### Nightly assurance and caches
92
+
93
+ Nightly assurance retains TSan, MSan, clang-tidy/dependency checks, i686 Debug,
94
+ extended functional tests, previous-release compatibility, and native macOS
95
+ and Windows fuzz corpora. A scheduled run skips expensive jobs only after the
96
+ same commit has already completed successfully; failures retry and unavailable
97
+ history fails open.
98
+
99
+ GitHub-hosted compiler and dependency caches are read by PRs and updated only
100
+ from the repository's default branch. Cache misses make jobs slower but do not
101
+ change which tests run.