Commit Graph

305 Commits

Author SHA1 Message Date
Christian Decker
c7d7a007b8 CI: fix env context reference in job-level env sections.
GitHub Actions doesn't allow referencing workflow-level env variables
from job-level env sections. Fixed by:
- Replacing ${{ env.PYTEST_OPTS_BASE }} with full values in job-level env
- Keeping ${{ env.PYTEST_OPTS_BASE }} in step-level env (which is valid)

This resolves the "Unrecognized named-value: 'env'" errors.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-16 13:04:33 +01:00
Christian Decker
82b7b39d86 CI: add artifact upload for pytest JUnit XML reports.
Adds upload-artifact steps after each test run to preserve test
results as GitHub artifacts. Each job uploads its report.xml with
a unique name based on the job and matrix configuration.

Artifacts are uploaded even when tests fail (if: always()) to
ensure test results are available for debugging.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-16 13:04:33 +01:00
Christian Decker
bca2db632c CI: consolidate GLOBAL_PYTEST_OPTS into PYTEST_OPTS_BASE.
Replaces GLOBAL_PYTEST_OPTS with PYTEST_OPTS_BASE that includes all
common pytest options: --reruns=10, -vvv, --junit-xml=report.xml,
--timeout=1800, and --durations=10.

Removes redundant option specifications from individual jobs and
simplifies pytest command invocations by removing direct references
to GLOBAL_PYTEST_OPTS (now inherited via PYTEST_OPTS).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Changelog-None
2025-12-16 13:04:33 +01:00
Madeline Paech
b270d915d3 updated pull request for next cln release timeline 2025-12-09 19:11:04 +10:30
Christian Decker
8db09f6d11 Add GitHub Pages documentation site with orchestrated workflows
This commit creates a comprehensive documentation publishing system that
combines coverage reports, Python API docs, and project documentation into
a unified GitHub Pages site.

Changes:
- Update coverage-nightly.yaml to support workflow_call trigger
- Update python-docs-nightly.yaml to support workflow_call trigger
- Add docs-nightly.yaml workflow for project documentation
- Add publish-site.yaml orchestrator workflow

The publish-site workflow:
- Triggers all three documentation workflows in parallel
- Collects artifacts from each workflow
- Organizes them into a unified site structure:
  - / (root) - Beautiful landing page with navigation
  - /docs/ - Project documentation
  - /python/ - Python API reference (pdoc3)
  - /coverage/ - Code coverage reports
- Deploys to GitHub Pages with proper permissions
- Runs nightly at 5 AM UTC, after all other workflows complete

Each workflow can be:
- Triggered manually via workflow_dispatch
- Called from other workflows via workflow_call
- Run on schedule (coverage: 2 AM, python-docs: 3 AM, docs: 4 AM)

The site includes:
- Modern, responsive landing page with gradient design
- Navigation cards for each documentation section
- 404 error page
- .nojekyll file to prevent Jekyll processing
- Automatic timestamp updates

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Changelog-None
2025-12-08 16:37:02 +01:00
Christian Decker
5c9d3884bb Add Python API documentation generation with pdoc3
This commit adds automated Python API documentation generation for all
workspace packages using pdoc3:

- Add contrib/api/generate-python-docs.py script to generate docs
- Add Makefile targets: python-docs and python-docs-clean
- Add GitHub Actions workflow for nightly documentation generation
- Documents 5 packages: pyln.client, pyln.proto, pyln.grpc, pyln.testing, pyln.spec.bolt7
- Creates beautiful index page with cards linking to each package
- Stores generated docs as artifacts with 90-day retention
- Add pdoc3 and markdown to dev dependencies

Bug fix:
- Fix pyln-client version.py: __all__ must contain strings, not class objects
  This was causing "TypeError: attribute name must be string, not 'type'" in pdoc3

Documentation is generated to docs/python/ which is excluded from version control.
Run 'make python-docs' to generate locally, or download from nightly workflow artifacts.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 16:37:02 +01:00
Christian Decker
4b9cffe183 Add comprehensive coverage infrastructure with clang source-based coverage
This commit introduces a modern coverage infrastructure for Core Lightning:

- Migrate from ad-hoc coverage script to integrated Makefile targets
- Add LLVM source-based coverage support with per-test profraw organization
- Integrate coverage collection into pytest framework via TailableProc
- Add GitHub Actions workflow for nightly coverage reports
- Add Taskfile.yml for convenient task automation
- Add codecov.yml for Codecov integration
- Add comprehensive coverage documentation in COVERAGE.md
- Update contributor workflow docs with new coverage script path
- Add coverage data files to .gitignore (*.profraw, *.profdata)
- Remove obsolete contrib/clang-coverage-report.sh
- Remove obsolete tests/conftest.py (now using pyln-testing markers)
- Update pyproject.toml to include pyln-testing in main dependencies

The new infrastructure automatically collects coverage data when CLN_COVERAGE_DIR
is set, organizing profraw files by test name for granular analysis.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 16:37:02 +01:00
Christian Decker
5c0827e417 ci: Add 2 shards to the UBSAN / ASAN runs 2025-12-06 12:32:38 +01:00
Christian Decker
2a2def32ab ci: Remove nix check from the critical path in ci.yaml 2025-12-06 12:32:38 +01:00
Christian Decker
7c28fdb689 ci: Run with rerunfailures rather than flaky 2025-12-06 12:32:38 +01:00
ShahanaFarooqui
a5268e5780 ci: Add new version-vls tag for Docker image
Changelog-Added: Added a new `version-vls` tag with includes  VLS's `remote_hsmd_socket` binary with the Core Lightning image.
2025-12-05 10:25:19 -08:00
ShahanaFarooqui
534e3ae8f8 ci: Remove lowdown and configure from the sign release job step
Changelog-None: Fixes draft release job creation in CI.
2025-11-28 20:27:02 +10:30
Rusty Russell
640888aa91 CI: add test that we can downgrade the node and run it under v25.09.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-11-28 09:16:53 +10:30
ShahanaFarooqui
4a67100c34 ci: Add skip_validation option to test the release on non-tagged commit
Changelog-None: Improved release action CI testing
2025-11-27 14:04:48 +10:30
Rusty Russell
9627bf9ba1 CI: don't run configure on *host* for release.
It breaks, but more importantly we don't need to install lowdown any more,
since the check in build-release.sh has been removed.

```
Run sudo apt-get install -y lowdown
Reading package lists...
Building dependency tree...
Reading state information...
The following NEW packages will be installed:
  lowdown
0 upgraded, 1 newly installed, 0 to remove and 21 not upgraded.
Need to get 129 kB of archives.
After this operation, 314 kB of additional disk space will be used.
Get:1 file:/etc/apt/apt-mirrors.txt Mirrorlist [144 B]
Get:2 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 lowdown amd64 1.1.0-1 [129 kB]
Fetched 129 kB in 0s (2971 kB/s)
Selecting previously unselected package lowdown.
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 216225 files and directories currently installed.)
Preparing to unpack .../lowdown_1.1.0-1_amd64.deb ...
Unpacking lowdown (1.1.0-1) ...
Setting up lowdown (1.1.0-1) ...
Processing triggers for man-db (2.12.0-4build2) ...
Not building database; man-db/auto-update is not 'true'.

Running kernel seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.
checking for getpagesize() in <unistd.h>... yes
checking for isblank() in <ctype.h>... yes
checking for little endian... yes
checking for memmem in <string.h>... yes
checking for memrchr in <string.h>... yes
checking for mmap() declaration... yes
checking for /proc/self/maps exists... yes
checking for qsort_r cmp takes trailing arg... yes
checking for __attribute__((section)) and __start/__stop... yes
checking for stack grows upwards... no
checking for statement expression support... yes
checking for <sys/filio.h>... no
checking for <sys/termios.h>... yes
checking for <sys/unistd.h>... yes
checking for __typeof__ support... yes
checking for unaligned access to int... yes
checking for utime() declaration... yes
checking for __attribute__((warn_unused_result))... yes
checking for #pragma omp and -fopenmp support... yes
checking for <valgrind/memcheck.h>... no
checking for working <ucontext.h... yes
checking for passing pointers via makecontext()... yes
checking for __builtin_cpu_supports()... yes
checking for closefrom() offered by system... yes
checking for F_CLOSEM defined for fctnl.... no
checking for close_range syscall available as __NR_close_range.... yes
checking for F_MAXFD defined for fcntl.... no
checking for zlib support... yes
checking for libsodium with IETF chacha20 variants... no
checking for sqlite3... yes
checking for postgres... yes
checking for User Statically-Defined Tracing (USDT)... no
checking for compiler is GCC... yes
checking for GCC version is 7 or above... yes
Writing variables to config.vars.2200... yes
Writing header to ccan/config.h.2200... yes
checking for python3-mako... not found
checking for lowdown... found
checking for sha256sum... found
checking for jq... found
Setting PREFIX... /usr/local
Setting CC... cc
Setting CONFIGURATOR_CC... cc
Setting CWARNFLAGS... -Wall -Wundef -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wold-style-definition -Werror -Wno-maybe-uninitialized -Wshadow=local
Setting CDEBUGFLAGS... -std=gnu11 -g -fstack-protector-strong
Setting COPTFLAGS... -Og
CSANFLAGS not found
FUZZFLAGS not found
FUZZER_LIB not found
LLVM_LDFLAGS not found
SQLITE3_CFLAGS not found
Setting SQLITE3_LDLIBS... -lsqlite3
Setting POSTGRES_INCLUDE... -I/usr/include/postgresql
Setting POSTGRES_LDLIBS... -L/usr/lib/x86_64-linux-gnu -lpq
SODIUM_CFLAGS not found
SODIUM_LDLIBS not found
Setting VALGRIND... 0
Setting DEBUGBUILD... 0
Setting COMPAT... 1
Setting PYTEST... python3 -m pytest
Setting STATIC... 0
Setting CLANG_COVERAGE... 0
Setting ASAN... 0
Setting UBSAN... 0
Setting TEST_NETWORK... regtest
Setting HAVE_PYTHON3_MAKO... 0
Setting SHA256SUM... sha256sum
Setting FUZZING... 0
Setting RUST... 1
Setting PYTHON... python3
Setting SED... sed
*** We need a libsodium >= 1.0.4 (released 2015-06-11).
Error: Process completed with exit code 1.
```

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-11-24 16:55:46 +10:30
daywalker90
838909634e ci: add workflow to create a PR for crate bumps
Changelog-None
2025-11-14 09:02:35 +10:30
Joseph Goulden
1ead6791fd chore: nix flake update
Switched to nixpkgs-unstable
Replaced postgresql dependency with much smaller libpq.
Utilise new inputs.self.submodules feature to simplify flake use
Moved apps to a separate file
Changelog-None
2025-11-13 15:35:51 +10:30
Rusty Russell
f58079e559 CI: Remove non-working FreeBSD test.
It takes over an hour to run, because there's no FreeBSD wheel for the cryptography Python
package, and it builds it, in Rust, from scratch.

And eventually, takes over 125 minutes and times out.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-11-13 15:33:02 +10:30
ShahanaFarooqui
bd3b3ca93f docs: Update rpc commands sync script as per readme API v2
Changelog-None.
2025-11-13 15:07:00 +10:30
ShahanaFarooqui
061182876f docs: Upgrade rdme from v8 to v10 2025-11-13 15:07:00 +10:30
ShahanaFarooqui
5733046617 docker: Fix missing CLN version in docker image
Changelog-Fixed: Core lightning version in Docker image will not be missing.
2025-11-13 12:04:08 +10:30
ShahanaFarooqui
31035077fa ci: Fix Release action failure due to change in .asc suffix
Reference commit: ea2f7607b8

Changelog-None.
2025-11-13 12:02:34 +10:30
Rusty Russell
4f9e13c000 GitHub: add --durations=10 to pytest runs.
This allows us to show what tests are slowest, by showing the duration for anything
which took 10 seconds or longer.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-10-28 11:03:33 +10:30
Rusty Russell
f3b227f8af external/libsodium: remove
We shipped our own because Ubuntu xenial (16.4) had an ancient one.

Changelog-Changed: Build: libsodium version >= 1.0.4 now required (released 2015-06-11)
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-10-26 20:31:45 +10:30
Rusty Russell
226533958a external/lowdown: remove.
Every distribution we have packages this now.

Changelog-Changed: Build: lowdown is now required (we no longer bundle our own).
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-10-26 20:31:45 +10:30
ShahanaFarooqui
3af8a028ef workflow: Add uv installation step
RPC documentation is not syncing on readme server with error `uv: command not found`.

Changelog-None.
2025-10-01 15:41:02 +09:30
ShahanaFarooqui
2e2a085942 ci: Add a new step to update pyln versions out of WORKDIR
The Publish distribution stage was failing because it executed the update-pyln-versions script from within the WORKDIR, which created an invalid context. To resolve this, we have decoupled the process, separating the updating of version state into its own step that runs from the root directory before the publish operation.

Changelog-None.
2025-09-19 10:44:20 +09:30
Rusty Russell
b77d648630 tools/build-release.sh: always append version to SHA256SUMS file.
Telling users to rename it is a poor idea, and if you have multiple releases in your release/ dir
it will get confusing.  So always append -v25.09 and update docs accordingly.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-09-10 12:38:12 +05:30
Sangbida Chaudhuri
f7f018fea9 ci: Retry CI workflow with changelog
Imagine you've burned the midnight oil trying to get your feature into this latest release that was due yesterday. Sweat is dripping off your brow, but you're proud, you're finally ready to push all your changes and merge!
.
.
.
Only for Github Gandalf the Grey to go "YOU SHALL NOT PASS". Why? Because you did not add a "Changelog-None" to any of commit messages. So you have to go back and try add a full stop here or a new line there and wait for the CI overlords to bless your PR. :'(

Well now, you can just add a Changelog-None to your PR description and github hopefully will take mercy on you and run your CI workflow again :)
2025-09-04 13:28:28 +09:30
Rusty Russell
76665123c2 GitHub: Update pull request template with next release dates.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-09-04 12:10:29 +09:30
ShahanaFarooqui
5bdf6f4cfc ci: make and publish fixes after uv migration
Changelog-None.
2025-09-02 13:41:44 +09:30
ShahanaFarooqui
6f45b47e44 ci: remove fetch-tags from checkout
Fixes conflict error in Release action when trying to fetch the commit and tag both together. Like
```
fatal: Cannot fetch both da7d3057ed and refs/tags/v25.09rc1 to refs/tags/v25.09rc1
```

Changelog-None.
2025-08-20 08:46:43 +09:30
Christian Decker
40ded45a85 ci: Remove nix check
It was breaking a lot, due to Cargo dependencies not being published,
no surprise there, we are just publishing them with the changes it is
complaining about.
2025-08-19 15:47:58 +09:30
Christian Decker
8f67da33b5 nix: Upgrade channel and flake checker actions 2025-08-19 15:47:58 +09:30
Lakshya Singh
b0360eac21 chore: add libffi
missing libffi fails coincurve installation
2025-08-11 11:06:22 +09:30
Lakshya Singh
c468dda59c chore: add poetry for reckless 2025-08-11 11:06:22 +09:30
Lakshya Singh
570c631b7a feat: update release pipeline
add documentation for release pipeline changes
2025-08-11 11:06:22 +09:30
Lakshya Singh
4afa5f71ae fix: macOS for grpico-tools
add openssl installation and flags to install grpcio-tools
2025-08-11 11:06:22 +09:30
Lakshya Singh
69102c62a3 feat: replace poetry with uv for dependency management
Replace poetry with uv for managing Python dependencies and running
commands across CI workflow.

- Add astral-sh/setup-uv@v5 action to install uv
- Replace all poetry run commands with uv run
- Remove poetry-specific installation steps
- Update Python setup in multiple jobs
2025-08-11 11:06:22 +09:30
ShahanaFarooqui
94bdad19f0 doc: Update json-rpc-api categories due to updated RPC links 2025-06-27 11:08:16 +09:30
Alex Myers
acf935e1c8 github: Update release dates for 25.09
Changelog-None
2025-06-16 13:10:33 -05:00
daywalker90
40d319b7be python: raise minimum supported python version to 3.9
Changelog-None
2025-06-12 13:51:18 +02:00
ShahanaFarooqui
ae320cd8d2 CI: Update Ubuntu version from 20 to 22 for Github Actions
Ubuntu 20.04 reached its end-of-life (EOL) on April 15, 2025, and GitHub Actions subsequently removed the Ubuntu 20.04 LTS runner. As a result, we must upgrade all workflow runners to at least Ubuntu 22.04. Currently, this update has only been applied to pypi.yml for core-lightning.

Changelog-None.
2025-06-09 14:24:53 -05:00
daywalker90
b97278fb9a python: upgrade grpcio-tools to 1.69.0 and protobuf to 5.29.4 for python3.13 compatibility
Changelog-None
2025-05-21 10:58:15 -05:00
ShahanaFarooqui
52a9bb1007 Separate reckless utility (1) and reckless rpc (7) documentation
Changelog-None.
2025-05-13 19:11:27 +09:30
Rusty Russell
a97527212c GitHub: fix "Automerge" button to *actually* depend on tests passing.
I've been bitten by this several times: skipping the test seems to make it OK
for GH!

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-05-11 11:25:40 +09:30
Rusty Russell
1521b92e41 CI: Use eatmydata to speed up test runs.
We don't care about data persistence, and this suppresses all sync calls (speeding
sqlite3 specifically).

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-05-08 14:01:38 +09:30
Rusty Russell
b472baeab5 CI: don't wait on update-docs-examples
It's disabled.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-05-08 14:01:38 +09:30
Rusty Russell
1125130db0 CI: don't abandon other runs just because one fails.
This significantly slows down the cycle when we have flakes (it's good if
the tree is completely broken though!).

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-05-08 14:01:38 +09:30
Rusty Russell
5778083cbd CI: disable the doc check for now.
It's not completely stable, which is OK, and we will solve this next release.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-05-02 13:25:11 -07:00