Commit graph

311 commits

Author SHA1 Message Date
SashaMIT
b35b848726 ci: fix pypi-publish env/run YAML after input binding
Correct indentation and bind remaining version/ref inputs via env.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-12 17:44:55 +02:00
SashaMIT
a0598a2d81 ci: bind docker/pypi workflow inputs via env before shell
Pass platforms-to-build, docker hub owner/version/push-latest, and
dist-location through env: before run: scripts (script-injection class).

Co-authored-by: Cursor <cursoragent@cursor.com>
Changelog-None
2026-08-12 17:44:55 +02:00
daywalker90
cfa9b6f92d CI: add concurrency restrictions for macos and msrv workflows
Quickly force pushing would leave multiple instances of this running

Changelog-None
2026-08-06 20:32:41 +02:00
Lagrang3
1818553e9a add a test for downgrading askrene datastore
Also trigger a db upgrade in the v26.09 so that impressions can be
removed by the downgrade tool.

Signed-off-by: Lagrang3 <lagrang3@protonmail.com>
2026-08-04 18:51:43 -03:00
Níckolas Goline
ae53e8775e tests: fix test_low_fd_limit failing on RLIM_INFINITY platforms
Some checks failed
Continuous Integration / First Integration Tests (1/6) (push) Has been cancelled
Continuous Integration / First Integration Tests (2/6) (push) Has been cancelled
Continuous Integration / First Integration Tests (3/6) (push) Has been cancelled
Continuous Integration / First Integration Tests (4/6) (push) Has been cancelled
Continuous Integration / First Integration Tests (5/6) (push) Has been cancelled
Continuous Integration / First Integration Tests (6/6) (push) Has been cancelled
Continuous Integration / Test CLN dual-fund Full Integration (push) Has been cancelled
Continuous Integration / Test CLN liquid Full Integration (push) Has been cancelled
Continuous Integration / Test CLN postgres Full Integration (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (1/12) (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (10/12) (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (11/12) (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (12/12) (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (2/12) (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (3/12) (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (4/12) (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (5/12) (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (6/12) (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (7/12) (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (8/12) (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (9/12) (push) Has been cancelled
Continuous Integration / ASan/UBSan (1/6) (push) Has been cancelled
Continuous Integration / ASan/UBSan (2/6) (push) Has been cancelled
Continuous Integration / ASan/UBSan (3/6) (push) Has been cancelled
Continuous Integration / ASan/UBSan (4/6) (push) Has been cancelled
Continuous Integration / ASan/UBSan (5/6) (push) Has been cancelled
Continuous Integration / ASan/UBSan (6/6) (push) Has been cancelled
Continuous Integration / Update examples in doc schemas (push) Has been cancelled
Continuous Integration / Test minimum supported BTC v25.0 with clang (push) Has been cancelled
Continuous Integration / CI completion (push) Has been cancelled
When RLIMIT_NOFILE hard limit is RLIM_INFINITY (macOS default) or
larger than UINT32_MAX, passing limits[1] and limits[1]+1 directly as
--dev-fd-limit-multiplier (a u32 option) causes lightningd to reject
the argument as out-of-range and exit(1), making both nodes fail to
start with "Unable to find Server started with public key" timeout.

Cap to TEST_CEILING=65536 when the hard limit is RLIM_INFINITY or
exceeds the ceiling, keeping the existing soft==hard halving path for
normal bounded limits.

Also add the test to the macOS CI list, so the platform it was broken
on now covers it.

Changelog-None
2026-07-31 16:20:34 +02:00
daywalker90
39b7f6dfbd CI: restructure release workflows
Some checks are pending
Continuous Integration / First Integration Tests (2/6) (push) Blocked by required conditions
Continuous Integration / First Integration Tests (3/6) (push) Blocked by required conditions
Continuous Integration / First Integration Tests (4/6) (push) Blocked by required conditions
Continuous Integration / First Integration Tests (5/6) (push) Blocked by required conditions
Continuous Integration / First Integration Tests (6/6) (push) Blocked by required conditions
Continuous Integration / Test CLN dual-fund Full Integration (push) Blocked by required conditions
Continuous Integration / Test CLN liquid Full Integration (push) Blocked by required conditions
Continuous Integration / Test CLN postgres Full Integration (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (1/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (10/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (11/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (12/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (2/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (3/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (4/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (5/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (6/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (7/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (8/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (9/12) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (1/6) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (2/6) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (3/6) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (4/6) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (5/6) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (6/6) (push) Blocked by required conditions
Continuous Integration / Update examples in doc schemas (push) Blocked by required conditions
Continuous Integration / Test minimum supported BTC v25.0 with clang (push) Blocked by required conditions
Continuous Integration / CI completion (push) Blocked by required conditions
Release Rust 🦀 / release_rust (push) Waiting to run
Binaries, docker images, and python packages are now separated into
build and publish flows. First everything gets built and if every build
step succeeds the publish step can continue.
Also fan out the docker build into a matrix to speed up the workflow.

Changelog-None
2026-07-30 13:24:36 +02:00
Ken Sedgwick
ae8dee8a6b pyln-testing: don't let wait_for_log match its own forwarded announcement
Some checks are pending
Continuous Integration / First Integration Tests (2/6) (push) Blocked by required conditions
Continuous Integration / First Integration Tests (3/6) (push) Blocked by required conditions
Continuous Integration / First Integration Tests (4/6) (push) Blocked by required conditions
Continuous Integration / First Integration Tests (5/6) (push) Blocked by required conditions
Continuous Integration / First Integration Tests (6/6) (push) Blocked by required conditions
Continuous Integration / Test CLN dual-fund Full Integration (push) Blocked by required conditions
Continuous Integration / Test CLN liquid Full Integration (push) Blocked by required conditions
Continuous Integration / Test CLN postgres Full Integration (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (1/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (10/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (11/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (12/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (2/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (3/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (4/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (5/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (6/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (7/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (8/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (9/12) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (1/6) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (2/6) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (3/6) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (4/6) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (5/6) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (6/6) (push) Blocked by required conditions
Continuous Integration / Update examples in doc schemas (push) Blocked by required conditions
Continuous Integration / Test minimum supported BTC v25.0 with clang (push) Blocked by required conditions
Continuous Integration / CI completion (push) Blocked by required conditions
Release Rust 🦀 / release_rust (push) Waiting to run
An inline plugin's Plugin() object lives in the test process, and
Plugin() installs a PluginLogHandler on the root logger so that a
plugin author's logging calls reach lightningd.  In the test process
that handler also forwards pyln's own machinery logs into the node's
log whenever the test-side logger emits at DEBUG.  In particular
wait_for_logs() announces 'Waiting for [pattern]' with the pattern
embedded verbatim, so the announcement lands in the very log being
scanned and matches itself, silently reducing the wait to a no-op.
That let test_sendpay_notifications_nowaiter race its channel close
against the first payment (both payments then fail and the success
assertion sees an empty list); any literal-pattern wait_for_log on an
inline-plugin node is similarly voided under DEBUG logging.

Attach a filter to the inline plugin's log handler that only forwards
records originating outside the pyln packages, so author logging still
reaches the node log but pyln internals never do.

The new test covers both directions: an author log line is found by
wait_for_log, and a never-logged sentinel genuinely times out (it
matched instantly via the forwarded announcement before this fix).

The node directory embeds the test name, and this test's long name
pushes inline-plugin.sock past the AF_UNIX bind cap on some runs:
Linux's 108 bytes under liquid-regtest's longer network dir, and
Darwin's 104 with even the default path.  Teach _inline_plugin() to
fall back to binding through a short symlink alias to the socket's
directory -- the same technique UnixSocket.connect already uses on
Darwin, aliasing the directory rather than the socket since bind
can't traverse a dangling final-component symlink.  The socket file
still lands where the shim's cwd-relative connect expects it.  The
test runs in the macOS smoke set too, so CI exercises the fallback on
the platform with the tighter cap.

Fixes: #9343
Changelog-None
2026-07-30 09:38:59 +02:00
daywalker90
6a243ef544 CI: set readme branch name to stable
Changelog-None
2026-07-22 15:06:02 +02:00
ShahanaFarooqui
4aae26dc39 CI: Add debug and upload artifacts on failure
Some checks failed
Continuous Integration / First Integration Tests (4/6) (push) Blocked by required conditions
Continuous Integration / First Integration Tests (5/6) (push) Blocked by required conditions
Continuous Integration / First Integration Tests (6/6) (push) Blocked by required conditions
Continuous Integration / Test CLN dual-fund Full Integration (push) Blocked by required conditions
Continuous Integration / Test CLN liquid Full Integration (push) Blocked by required conditions
Continuous Integration / Test CLN postgres Full Integration (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (1/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (10/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (11/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (12/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (2/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (3/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (4/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (5/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (6/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (7/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (8/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (9/12) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (1/6) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (2/6) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (3/6) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (4/6) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (5/6) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (6/6) (push) Blocked by required conditions
Continuous Integration / Update examples in doc schemas (push) Blocked by required conditions
Continuous Integration / Test minimum supported BTC v25.0 with clang (push) Blocked by required conditions
Continuous Integration / CI completion (push) Blocked by required conditions
Release Rust 🦀 / release_rust (push) Waiting to run
ReadMe Sync / rdme-docs-sync (push) Has been cancelled
ReadMe RPC Sync / rdme-rpc-sync (push) Has been cancelled
2026-07-13 18:15:06 -07:00
Rusty Russell
e29915c6f8 CI: re-enable docs examples checks.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-07-13 18:15:06 -07:00
daywalker90
608f6952ea cln-grpc: vendor protoc as a build-dependency
our current version of `grpcio-tools` 1.75.1 bundles `protoc` version:

```
uv run python -m grpc_tools.protoc --version
libprotoc 31.1
```

In CI/Dockerfiles we use 29.4 or whatever the OS provides with the
`protobuf-compiler` package, which for the most part is 21.12.

We actually want to somewhat match these versions but we don't have any
control over OS packages' versions.

We can instead bundle `protoc` as a build dependency for `cln-grpc`.
The current version for that bundles 31.1 as well.

This way the versions of `protoc` are more consistent everywhere.

One downside is that arm 32-bit hosts get no bundled protoc for `cln-grpc`
and have to still install `protobuf-compiler` themselves.

Changelog-None
2026-07-13 18:15:24 +02:00
daywalker90
e04d2f93ff
CI: install CLN on macos and run selected pytest tests
Some checks failed
Continuous Integration / First Integration Tests (1/6) (push) Has been cancelled
Continuous Integration / First Integration Tests (2/6) (push) Has been cancelled
Continuous Integration / First Integration Tests (3/6) (push) Has been cancelled
Continuous Integration / First Integration Tests (4/6) (push) Has been cancelled
Continuous Integration / First Integration Tests (5/6) (push) Has been cancelled
Continuous Integration / First Integration Tests (6/6) (push) Has been cancelled
Continuous Integration / Test CLN dual-fund Full Integration (push) Has been cancelled
Continuous Integration / Test CLN liquid Full Integration (push) Has been cancelled
Continuous Integration / Test CLN postgres Full Integration (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (1/12) (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (10/12) (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (11/12) (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (12/12) (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (2/12) (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (3/12) (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (4/12) (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (5/12) (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (6/12) (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (7/12) (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (8/12) (push) Has been cancelled
Continuous Integration / Valgrind Test CLN (9/12) (push) Has been cancelled
Continuous Integration / ASan/UBSan (1/6) (push) Has been cancelled
Continuous Integration / ASan/UBSan (2/6) (push) Has been cancelled
Continuous Integration / ASan/UBSan (3/6) (push) Has been cancelled
Continuous Integration / ASan/UBSan (4/6) (push) Has been cancelled
Continuous Integration / ASan/UBSan (5/6) (push) Has been cancelled
Continuous Integration / ASan/UBSan (6/6) (push) Has been cancelled
Continuous Integration / Update examples in doc schemas (disabled temporarily!) (push) Has been cancelled
Continuous Integration / Test minimum supported BTC v25.0 with clang (push) Has been cancelled
Continuous Integration / CI completion (push) Has been cancelled
remove the manual node start as it is covered by running pytests

Changelog-None
2026-07-10 18:20:11 +02:00
Níckolas Goline
0da8fa28eb ci: reduce sanitizer/valgrind worker count to avoid runner OOM
The ASan/UBSan and Valgrind shards intermittently have their hosted
runner killed mid-run with "The runner has received a shutdown signal",
surfaced as a mass test cancellation.  The VM itself is being
terminated, most likely from memory exhaustion: `-n $(nproc)+1` runs 5
parallel node-clusters and ASan roughly triples RSS, peaking past the
16GB hosted-runner ceiling on heavy shards (deterministic repro at ~10%
on ASan/UBSan 3/6 due to the fixed --test-group-random-seed=42).

Drop these two jobs to `-n $(nproc)` (one fewer worker) to lower peak
memory, and add an `if: failure()` step that dumps OOM-related dmesg and
kernel-log lines so the next failure records the actual cause.

Changelog-None
2026-07-06 16:16:47 +02:00
Dusty Daemon
066056d915 CI: Check generated docs on Mac
Some checks are pending
Continuous Integration / First Integration Tests (2/6) (push) Blocked by required conditions
Continuous Integration / First Integration Tests (3/6) (push) Blocked by required conditions
Continuous Integration / First Integration Tests (4/6) (push) Blocked by required conditions
Continuous Integration / First Integration Tests (5/6) (push) Blocked by required conditions
Continuous Integration / First Integration Tests (6/6) (push) Blocked by required conditions
Continuous Integration / Test CLN dual-fund Full Integration (push) Blocked by required conditions
Continuous Integration / Test CLN liquid Full Integration (push) Blocked by required conditions
Continuous Integration / Test CLN postgres Full Integration (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (1/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (10/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (11/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (12/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (2/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (3/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (4/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (5/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (6/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (7/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (8/12) (push) Blocked by required conditions
Continuous Integration / Valgrind Test CLN (9/12) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (1/6) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (2/6) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (3/6) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (4/6) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (5/6) (push) Blocked by required conditions
Continuous Integration / ASan/UBSan (6/6) (push) Blocked by required conditions
Continuous Integration / Update examples in doc schemas (disabled temporarily!) (push) Blocked by required conditions
Continuous Integration / Test minimum supported BTC v25.0 with clang (push) Blocked by required conditions
Continuous Integration / CI completion (push) Blocked by required conditions
Release Rust 🦀 / release_rust (push) Waiting to run
Test that the docs generated on Mac match the docs in the commit

Changelog-None
2026-07-02 11:38:38 +02:00
Níckolas Goline
7224436387 Versions: post-release updates for v26.06
Co-Authored-By: Madeline <madeline@blockstream.com>
Changelog-None
2026-06-19 09:38:06 +09:30
daywalker90
c779e1650a CI: change email server port from 587 to 465 for repro errors
Changelog-None
2026-06-17 14:13:25 +02:00
Dusty Daemon
aff0619252 CI: Update Mac CI to use gmake
`gmake` is kept up to date while `make` is apple’s built in mac that is not updated and very old at this point.

Changelog-None
2026-06-16 13:46:29 +02:00
daywalker90
a0041a6ec7 CI: remove focal and add resolute Ubuntu builds
Changelog-None
2026-05-28 08:31:55 +02:00
daywalker90
db4644f0b4 CI: update github actions in preparation of node.js 20 deprecation
Changelog-None
2026-05-20 14:02:16 +02:00
Rusty Russell
6150fbcb66 CI: add a 32-bit cross build.
This broke the recent docker upload in the release.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-05-05 15:17:25 +10:00
Rusty Russell
aaf36612bb Versions: update for next version.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-04-30 20:09:31 +09:30
daywalker90
5ab7b94626 CI: add hook and notification schema paths to readme rpc sync
Changelog-None
2026-04-27 13:23:53 +02:00
daywalker90
16b2a183d4 CI: remove crate-bump workflow
it was not picking up usage and is not working as intended either

Changelog-None
2026-04-24 16:52:09 +02:00
daywalker90
aafd2a8311 CI: add workflow to verify MSRV on any rust file changes
Changelog-None
2026-04-24 15:48:06 +02:00
daywalker90
3a17da61c9 splice: Remove experiemental splicing feature 2026-04-09 11:04:42 +09:30
Rusty Russell
d73b756401 CI: Disable flakiness tracking.
287abfbd90 "ci: Add a simple plugin to
report test results to our falkiness tracker" slowed our integration
tests to a crawl: out 6-way gcc integration tests should have taken 20
minutes, but were taking 1hr 24 minutes, and some runs were timing out
altogether.

I cannot reach the server, seems it is down.  But tracking flakiness
is rarely useful, so I am disabling this.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-02-28 18:52:19 +10:30
Rusty Russell
303b876954 CI: shorten job names.
On the GH action view I can only see "Compile CLN compile-c" which is not enough!

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-02-28 18:52:19 +10:30
Rusty Russell
acdda01c01 CI: Don't manually install bitcoind again.
.github/scripts/setup.sh does this already, *and* it uses the cache now.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-02-28 18:52:19 +10:30
Rusty Russell
bda519529c CI: cache the apt packages, protoc and bitcoind/elements downloads.
Usually downloading and installing takes 90 seconds.  But sometimes it
takes an hour!  Use caching for this, to keep it consistent.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-02-28 18:52:19 +10:30
Rusty Russell
5174512408 CI: Speed up 'min-btc-support' by compiling clang with -O3.
It's timing out after 2 hours sometimes: this now make it finish in 53
minutes.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-02-28 18:52:19 +10:30
Rusty Russell
31ad743e6b CI: Use -O3 builds for Liquid integration tests.
The other integration tests are taking under an hour, and this is
taking 1hr 30m.

The downside is that backtraces are far less clear, but that's why the
main run uses the full debug version.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-02-24 11:54:04 +10:30
Rusty Russell
c1b2fde731 CI: Use variable to make group counts neater.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-02-24 11:54:04 +10:30
Rusty Russell
1d351e2939 CI: split gcc+sqlite3 tests into 6 runners.
It takes 1h43m, and it's our "basic" integration test.  So split 6
ways to get faster results, then if that passes do the other tests
(Postgres, clang, Liquid, splicing, dual-funding).

Now they take about 20 minutes each.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-02-24 11:54:04 +10:30
Rusty Russell
9b071418cb CI: Make 12 not 10 valgrind tests, and 6 not 12 sanitizer tests.
Given the new timings, this should even things out a little.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-02-24 11:54:04 +10:30
Rusty Russell
201b68487d CI: use -O1 optimized builds for sanitizer and valgrind runs.
ChatGPT suggested this for sanitizer runs, but valgrind gains a little
too.

Sanitizer before:	74.1-98.9(84.5+/-7.3) minutes
Sanitizer after:	11.6-15.2(13.3+/-1.2) minutes

Valgrind before:	43.3-54.1(46.8+/-3.8) minutes
Valgrind after:		40.9-49.4(43.4+/-2.5) minutes

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-02-24 11:54:04 +10:30
Christian Decker
381f94a6a0 ci: Enable sccache compiler cache for Rust and C
[ Cherry-picked from another PR, and read the docs which say you have
  to set SCCACHE_GHA_ENABLED to get inter-job caching! --RR ]
2026-02-24 11:54:04 +10:30
Rusty Russell
1047c4847e CI: use more optimized builds sometimes.
1. Don't --enable-debugbuild for sanitizer runs (slow) or -O3 compilations.
2. Use -O3 build for splicing and postgres tests runs (speed them a
   little), make sure builds without --enable-debugbuild work.
3. Remove clang test run, because we already use that for
   minimum-btc-version test: this saves another 2 hour CI job.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-02-24 11:54:04 +10:30
Rusty Russell
d39ba34095 CI: make downgrade and slow integration tests depend on check-compiled-source step.
As pointed out by Alex Myers: we don't want to waste time running the
complex steps if the generated files are not up-to-date.

But we still run the faster "integration" tests (not valgrind or
sanitizer ones), since they often reveal early failures.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-02-24 11:54:04 +10:30
Rusty Russell
740e35adab CI: avoid rebuilds on downloads using testpack.tar.gz.
We use the same fragment everywhere for consistency, even though some
stages don't actually call make.

The magic is:
 CARGO=false CC=devtools/cc-nobuild SUPPRESS_GENERATION=1

Which causes us to fail if we want to rebuild.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-02-24 11:54:04 +10:30
Rusty Russell
e50ea42096 CI: Don't do release target build, create "small" profile
Using RUST_TARGET=release is slower than RUST_TARGET=debug, *but*
the images are much bigger.

On my laptop, but restricted to 4 CPUs.  I added a target to build all
the prerequisited but not compress the bzip2:

RUST_TARGET		Time to build		Size (testpack.tar.bz2)
release		        4m49s			133MB
debug			2m34s			343MB
small			2m9s			155MB

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-02-24 11:54:04 +10:30
Rusty Russell
7baeb8f873 CI: don't use /tmp/old-cln, use a local dir.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-02-24 11:54:04 +10:30
Rusty Russell
bc51872648 CI: do cargo test --all as part of post-build step
No point spending 1m24 seconds for *each* different compiler variant.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-02-24 11:54:04 +10:30
Rusty Russell
b3978d94ef CI: Don't explicitly invoke .github/scripts/install-bitcoind.sh
It's done by setup.sh, so simply set the env var for that.  Don't try
to reinstall valgrind or call `sudo apt-get update -qq` either, since
setup.sh does that too.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-02-24 11:54:04 +10:30
Rusty Russell
932ba95020 Makefile: don't build the sources in make check-source.
check-source-bolt needs devtools, and check-python needs a full build.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-02-24 11:54:04 +10:30
Rusty Russell
77251ec16b CI: use nproc + 1 for pytest parallelism..
More future proof, better for self-hosted runners.

Example run times before:

       4s       CI completion
   2m 36s       Check we can downgrade the node (compile-gcc, sqlite3, liquid-regtest)
   2m 52s       Check we can downgrade the node (compile-gcc, postgres, regtest)
   3m 20s       Check we can downgrade the node (compile-gcc, sqlite3, regtest, 1)
   3m 20s       Check we can downgrade the node (compile-gcc, sqlite3, regtest, 1)
   8m 1s        Run fuzz regression tests
   11m 46s      Run unit tests (compile-clang-sanitizers, 0)
   12m 59s      Compile CLN compile-gcc
   13m 42s      Compile CLN compile-clang
   14m 10s      Compile CLN compile-gcc-O3
   14m 15s      Compile CLN compile-clang-sanitizers
   15m 23s      Pre-build checks
   19m 37s      Test CLN dual-fund
   26m 49s      Run unit tests (compile-gcc, 1)
   43m 19s      Valgrind Test CLN Valgrind (06/10)
   43m 21s      Valgrind Test CLN Valgrind (08/10)
   43m 40s      Valgrind Test CLN Valgrind (05/10)
   43m 59s      Valgrind Test CLN Valgrind (03/10)
   44m 4s       Valgrind Test CLN Valgrind (07/10)
   47m 28s      Valgrind Test CLN Valgrind (09/10)
   47m 37s      Valgrind Test CLN Valgrind (02/10)
   47m 45s      Valgrind Test CLN Valgrind (01/10)
   52m 51s      Valgrind Test CLN Valgrind (04/10)
   54m 6s       Valgrind Test CLN Valgrind (10/10)
1h 14m 13s      Sanitizers Test CLN (ASan/UBSan (03/12), 3, --test-group=3 --test-group-count=12)
1h 14m 6s       Sanitizers Test CLN (ASan/UBSan (06/12), 6, --test-group=6 --test-group-count=12)
1h 15m 23s      Sanitizers Test CLN (ASan/UBSan (01/12), 1, --test-group=1 --test-group-count=12)
1h 20m 30s      Sanitizers Test CLN (ASan/UBSan (08/12), 8, --test-group=8 --test-group-count=12)
1h 22m 35s      Sanitizers Test CLN (ASan/UBSan (12/12), 12, --test-group=12 --test-group-count=12)
1h 23m 49s      Sanitizers Test CLN (ASan/UBSan (04/12), 4, --test-group=4 --test-group-count=12)
1h 26m 11s      Sanitizers Test CLN (ASan/UBSan (07/12), 7, --test-group=7 --test-group-count=12)
1h 28m 44s      Sanitizers Test CLN (ASan/UBSan (05/12), 5, --test-group=5 --test-group-count=12)
1h 29m 1s       Sanitizers Test CLN (ASan/UBSan (02/12), 2, --test-group=2 --test-group-count=12)
1h 29m 4s       Sanitizers Test CLN (ASan/UBSan (11/12), 11, --test-group=11 --test-group-count=12)
1h 31m 36s      Sanitizers Test CLN (ASan/UBSan (09/12), 9, --test-group=9 --test-group-count=12)
1h 38m 54s      Sanitizers Test CLN (ASan/UBSan (10/12), 10, --test-group=10 --test-group-count=12)
1h 39m 22s      Test CLN liquid
1h 52m 23s      Test minimum supported BTC v25.0 with clang
1h 52m 28s      Test CLN gcc
1h 53m 57s      Test CLN splicing
1h 57m 25s      Test CLN postgres
1h 59m 25s      Test CLN clang

2d 17h 56m 16s  TOTAL

Example runtimes afterwards:



Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-02-24 11:54:04 +10:30
Rusty Russell
42bdb2d638 CI: run tests in the wireshark group so we can test packet sizes
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-02-18 14:13:25 +10:30
Rusty Russell
1b1274df7e CI: reduce parallelism for pytest.
In November 2022 we seemed to increase parallelism from 2 and 3 to 10!
That is a huge load for these CI boxes, and does explain some of our
flakes.

We only run in parallel because some tests sleep, but it's diminishing
returns (GH runners have 4 VCPUs, 16GB RAM).

This reduces it so:
- Normal runs are -n 4
- Valgrind runs are -n 2
- Sanitizer runs are -n 3

If I use my beefy build box (64BG RAM) but reduce it to 4 CPUs:

Time for pytest -n 5:
Time for pytest -n 4:
Time for pytest -n 3:

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-02-09 19:46:22 +10:30
Rusty Russell
ee0175b85f Makefile: update next and prev versions now we've released.
This means:
1. downgrade changes (we no longer fail due to node biases).
2. various deprecations no longer are

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-01-20 19:32:42 +10:30
Christian Decker
eae521b15d chore: Ensure the logging library does not get upset when output capture is disabled.
Changelog-Fixed: Testing infrastructure no longer fails when logging output capture is disabled.
2026-01-20 15:05:07 +10:30
Rusty Russell
51525efda2 ci: don't run shard 2/12 ubsan without parallel.
3974806e5a added this:
    CI: Try not running group 2/10 UBSAN in parallel.
    
    It's being killed with signal 143, which means docker isn't happy; too much memory consumption?

But since we're now at 12 groups, that probably doesn't apply (it
might not have even before, in the two years since that commit since
so may things have been added).  And it caused this shard to take over
2 hours and timed out.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2026-01-08 22:33:19 +10:30