Skip to content

Commit 35b0fc5

Browse files
committed
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). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
1 parent bf5b450 commit 35b0fc5

File tree

1 file changed

+76
-8
lines changed

1 file changed

+76
-8
lines changed

.github/workflows/ci.yaml

Lines changed: 76 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -410,23 +410,90 @@ jobs:
410410
path: report.xml
411411
if-no-files-found: ignore
412412

413-
integration:
414-
name: Test CLN ${{ matrix.name }}
413+
# For speed, we run a first integration test using gcc -O3 and sqlite3, in 6 parts.
414+
# If that passes, we move on to the more obscure integration tests.
415+
first-integration:
416+
name: First Integration Tests (${{ matrix.GROUP }}/6)
415417
runs-on: ubuntu-24.04
416418
timeout-minutes: 120
417419
env:
418420
RUST_PROFILE: small # Has to match the one in the compile step
419421
needs:
420422
- compile
423+
strategy:
424+
fail-fast: false
425+
matrix:
426+
CFG: [compile-gcc]
427+
GROUP: [1,2,3,4,5,6]
428+
TEST_DB_PROVIDER: [sqlite3]
429+
COMPILER: [gcc]
430+
TEST_NETWORK: [regtest]
431+
steps:
432+
- name: Checkout
433+
uses: actions/checkout@v4
434+
435+
- name: Set up Python 3.10
436+
uses: actions/setup-python@v5
437+
with:
438+
python-version: "3.10"
439+
440+
- name: Install uv
441+
uses: astral-sh/setup-uv@v5
442+
443+
- name: Install dependencies
444+
env:
445+
TEST_NETWORK: ${{ matrix.TEST_NETWORK }}
446+
run: |
447+
bash -x .github/scripts/setup.sh
448+
449+
- name: Download build
450+
uses: actions/download-artifact@v4
451+
with:
452+
name: cln-${{ matrix.CFG }}.tar.gz
453+
454+
- name: Unpack prebuilt binaries
455+
run: |
456+
git submodule sync && git submodule update --init --recursive
457+
# Make sure source appears older than what we're about to unpack
458+
find . -type f -print0 | xargs -0 touch -d yesterday
459+
tar xaf cln-${{ matrix.CFG }}.tar.gz
460+
461+
- name: Test
462+
env:
463+
COMPILER: ${{ matrix.COMPILER }}
464+
EXPERIMENTAL_DUAL_FUND: ${{ matrix.EXPERIMENTAL_DUAL_FUND }}
465+
EXPERIMENTAL_SPLICING: ${{ matrix.EXPERIMENTAL_SPLICING }}
466+
COMPAT: 1
467+
SLOW_MACHINE: 1
468+
TEST_DEBUG: 1
469+
TEST_DB_PROVIDER: ${{ matrix.TEST_DB_PROVIDER }}
470+
TEST_NETWORK: ${{ matrix.TEST_NETWORK }}
471+
LIGHTNINGD_POSTGRES_NO_VACUUM: 1
472+
PYTEST_OPTS: ${{ env.PYTEST_OPTS_BASE }} --test-group-random-seed=42
473+
run: |
474+
env
475+
cat config.vars
476+
VALGRIND=0 sg wireshark "uv run eatmydata pytest tests/ -n $(($(nproc) + 1)) ${PYTEST_OPTS} --test-group=${{ matrix.GROUP }} --test-group-count=6"
477+
- name: Upload test results
478+
if: always()
479+
uses: actions/upload-artifact@v4
480+
with:
481+
name: pytest-results-first-integration-${{ matrix.GROUP }}
482+
path: report.xml
483+
if-no-files-found: ignore
484+
485+
second-integration:
486+
name: Test CLN ${{ matrix.name }} Full Integration
487+
runs-on: ubuntu-24.04
488+
timeout-minutes: 120
489+
env:
490+
RUST_PROFILE: small # Has to match the one in the compile step
491+
needs:
492+
- first-integration
421493
strategy:
422494
fail-fast: false
423495
matrix:
424496
include:
425-
- NAME: gcc
426-
CFG: compile-gcc
427-
TEST_DB_PROVIDER: sqlite3
428-
COMPILER: gcc
429-
TEST_NETWORK: regtest
430497
# We do a clang run, but with minimum BTC version, to avoid YA test run.
431498
# And of course we want to test postgres too
432499
- NAME: postgres
@@ -780,7 +847,8 @@ jobs:
780847
name: CI completion
781848
runs-on: ubuntu-24.04
782849
needs:
783-
- integration
850+
- first-integration
851+
- second-integration
784852
- check-units
785853
- integration-valgrind
786854
- integration-sanitizers

0 commit comments

Comments
 (0)