@@ -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