Skip to content

Commit c01137a

Browse files
committed
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>
1 parent f53d89b commit c01137a

File tree

1 file changed

+82
-120
lines changed

1 file changed

+82
-120
lines changed

.github/workflows/ci.yaml

Lines changed: 82 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ jobs:
9494
VALGRIND: 0
9595
PYTEST_OPTS: ${{ env.PYTEST_OPTS_BASE }}
9696
run: |
97-
uv run make -j $(nproc) check-source BASE_REF="origin/${{ github.base_ref }}"
97+
uv run make -j $(nproc) check-source BASE_REF="origin/${{ github.base_ref }}" CARGO=false CC=devtools/cc-nobuild SUPPRESS_GENERATION=1
9898
- name: Upload test results
9999
if: always()
100100
uses: actions/upload-artifact@v4
@@ -154,24 +154,26 @@ jobs:
154154
UBSAN: ${{ matrix.UBSAN }}
155155
VALGRIND: ${{ matrix.VALGRIND }}
156156
COMPAT: 1
157-
CFG: ${{ matrix.CFG }}
158157
run: |
159158
set -e
160159
./configure --enable-debugbuild CC="$COMPILER" ${{ matrix.COPTFLAGS_VAR }}
161160
162-
uv run make -j $(nproc) testpack.tar.bz2
161+
uv run make -j $(nproc) testpack.tar.gz
163162
164163
# Rename now so we don't clash
165-
mv testpack.tar.bz2 cln-${CFG}.tar.bz2
164+
mv testpack.tar.gz cln-${{ matrix.CFG }}.tar.gz
166165
- uses: actions/upload-artifact@v4
167166
with:
168-
name: cln-${{ matrix.CFG }}.tar.bz2
169-
path: cln-${{ matrix.CFG }}.tar.bz2
167+
name: cln-${{ matrix.CFG }}.tar.gz
168+
path: cln-${{ matrix.CFG }}.tar.gz
170169

171170
check-compiled-source:
172171
runs-on: ubuntu-24.04
173172
needs:
174173
- compile
174+
strategy:
175+
matrix:
176+
CFG: [compile-gcc]
175177
steps:
176178
- name: Checkout
177179
uses: actions/checkout@v4
@@ -193,17 +195,18 @@ jobs:
193195
- name: Download build
194196
uses: actions/download-artifact@v4
195197
with:
196-
name: cln-compile-gcc.tar.bz2
198+
name: cln-${{ matrix.CFG }}.tar.gz
197199

198-
- name: Unpack pre-built CLN
199-
env:
200-
CFG: ${{ matrix.CFG }}
200+
- name: Unpack prebuilt binaries
201201
run: |
202-
tar -xaf cln-compile-gcc.tar.bz2
202+
git submodule sync && git submodule update --init --recursive
203+
# Make sure source appears older than what we're about to unpack
204+
find . -type f -print0 | xargs -0 touch -d yesterday
205+
tar xaf cln-${{ matrix.CFG }}.tar.gz
203206
204207
- name: Check
205208
run: |
206-
uv run eatmydata make -j $(nproc) check-source-bolt check-python check-gen-updated check-doc
209+
uv run eatmydata make -j $(nproc) check-source-bolt check-python check-gen-updated check-doc CARGO=false CC=devtools/cc-nobuild SUPPRESS_GENERATION=1
207210
- name: Check rust packages
208211
run: cargo test --all
209212

@@ -248,12 +251,18 @@ jobs:
248251
- name: Download build
249252
uses: actions/download-artifact@v4
250253
with:
251-
name: cln-${{ matrix.CFG }}.tar.bz2
254+
name: cln-${{ matrix.CFG }}.tar.gz
255+
256+
- name: Unpack prebuilt binaries
257+
run: |
258+
git submodule sync && git submodule update --init --recursive
259+
# Make sure source appears older than what we're about to unpack
260+
find . -type f -print0 | xargs -0 touch -d yesterday
261+
tar xaf cln-${{ matrix.CFG }}.tar.gz
252262
253263
- name: Check
254264
run: |
255-
tar -xaf cln-${{ matrix.CFG }}.tar.bz2
256-
uv run eatmydata make -j $(nproc) check-units installcheck VALGRIND=${{ matrix.VALGRIND }}
265+
uv run eatmydata make -j $(nproc) check-units installcheck VALGRIND=${{ matrix.VALGRIND }} CARGO=false CC=devtools/cc-nobuild SUPPRESS_GENERATION=1
257266
258267
check-fuzz:
259268
name: Run fuzz regression tests
@@ -323,13 +332,14 @@ jobs:
323332
- name: Download build
324333
uses: actions/download-artifact@v4
325334
with:
326-
name: cln-${{ matrix.CFG }}.tar.bz2
335+
name: cln-${{ matrix.CFG }}.tar.gz
327336

328-
- name: Unpack pre-built CLN
329-
env:
330-
CFG: ${{ matrix.CFG }}
337+
- name: Unpack prebuilt binaries
331338
run: |
332-
tar -xaf cln-${CFG}.tar.bz2
339+
git submodule sync && git submodule update --init --recursive
340+
# Make sure source appears older than what we're about to unpack
341+
find . -type f -print0 | xargs -0 touch -d yesterday
342+
tar xaf cln-${{ matrix.CFG }}.tar.gz
333343
334344
- name: Fetch and unpack previous CLN
335345
run: |
@@ -344,6 +354,7 @@ jobs:
344354
# Loading the network from config.vars rather than the envvar is a terrible idea...
345355
sed -i 's/TEST_NETWORK=regtest/TEST_NETWORK=liquid-regtest/g' config.vars
346356
cat config.vars
357+
touch -d yesterday config.vars
347358
348359
- name: Test
349360
env:
@@ -373,7 +384,6 @@ jobs:
373384
timeout-minutes: 120
374385
env:
375386
RUST_PROFILE: small # Has to match the one in the compile step
376-
PYTEST_OPTS: -vvv --junit-xml=report.xml --timeout=1800 --durations=10
377387
needs:
378388
- compile
379389
strategy:
@@ -439,13 +449,14 @@ jobs:
439449
- name: Download build
440450
uses: actions/download-artifact@v4
441451
with:
442-
name: cln-${{ matrix.CFG }}.tar.bz2
452+
name: cln-${{ matrix.CFG }}.tar.gz
443453

444-
- name: Unpack pre-built CLN
445-
env:
446-
CFG: ${{ matrix.CFG }}
454+
- name: Unpack prebuilt binaries
447455
run: |
448-
tar -xaf cln-${CFG}.tar.bz2
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
449460
450461
- name: Switch network
451462
if: ${{ matrix.TEST_NETWORK == 'liquid-regtest' }}
@@ -460,12 +471,12 @@ jobs:
460471
EXPERIMENTAL_DUAL_FUND: ${{ matrix.EXPERIMENTAL_DUAL_FUND }}
461472
EXPERIMENTAL_SPLICING: ${{ matrix.EXPERIMENTAL_SPLICING }}
462473
COMPAT: 1
463-
CFG: ${{ matrix.CFG }}
464474
SLOW_MACHINE: 1
465475
TEST_DEBUG: 1
466476
TEST_DB_PROVIDER: ${{ matrix.TEST_DB_PROVIDER }}
467477
TEST_NETWORK: ${{ matrix.TEST_NETWORK }}
468478
LIGHTNINGD_POSTGRES_NO_VACUUM: 1
479+
PYTEST_OPTS: ${{ env.PYTEST_OPTS_BASE }}
469480
run: |
470481
env
471482
cat config.vars
@@ -479,49 +490,18 @@ jobs:
479490
if-no-files-found: ignore
480491

481492
integration-valgrind:
482-
name: Valgrind Test CLN ${{ matrix.name }}
493+
name: Valgrind Test CLN (${{ matrix.GROUP }}/12)
483494
runs-on: ubuntu-24.04
484495
timeout-minutes: 120
485496
env:
486497
RUST_PROFILE: small # Has to match the one in the compile step
487-
CFG: compile-gcc
488-
PYTEST_OPTS: -vvv --junit-xml=report.xml --timeout=1800 --durations=10 --test-group-random-seed=42
489498
needs:
490499
- compile
491500
strategy:
492501
fail-fast: false
493502
matrix:
494-
include:
495-
- NAME: Valgrind (01/10)
496-
GROUP: 1
497-
PYTEST_OPTS: --test-group=1 --test-group-count=10
498-
- NAME: Valgrind (02/10)
499-
GROUP: 2
500-
PYTEST_OPTS: --test-group=2 --test-group-count=10
501-
- NAME: Valgrind (03/10)
502-
GROUP: 3
503-
PYTEST_OPTS: --test-group=3 --test-group-count=10
504-
- NAME: Valgrind (04/10)
505-
GROUP: 4
506-
PYTEST_OPTS: --test-group=4 --test-group-count=10
507-
- NAME: Valgrind (05/10)
508-
GROUP: 5
509-
PYTEST_OPTS: --test-group=5 --test-group-count=10
510-
- NAME: Valgrind (06/10)
511-
GROUP: 6
512-
PYTEST_OPTS: --test-group=6 --test-group-count=10
513-
- NAME: Valgrind (07/10)
514-
GROUP: 7
515-
PYTEST_OPTS: --test-group=7 --test-group-count=10
516-
- NAME: Valgrind (08/10)
517-
GROUP: 8
518-
PYTEST_OPTS: --test-group=8 --test-group-count=10
519-
- NAME: Valgrind (09/10)
520-
GROUP: 9
521-
PYTEST_OPTS: --test-group=9 --test-group-count=10
522-
- NAME: Valgrind (10/10)
523-
GROUP: 10
524-
PYTEST_OPTS: --test-group=10 --test-group-count=10
503+
CFG: [compile-gcc]
504+
GROUP: [1,2,3,4,5,6,7,8,9,10]
525505
steps:
526506
- name: Checkout
527507
uses: actions/checkout@v4
@@ -544,17 +524,22 @@ jobs:
544524
- name: Download build
545525
uses: actions/download-artifact@v4
546526
with:
547-
name: cln-compile-gcc.tar.bz2
527+
name: cln-${{ matrix.CFG }}.tar.gz
548528

549-
- name: Unpack build
550-
run: tar -xvjf cln-compile-gcc.tar.bz2
529+
- name: Unpack prebuilt binaries
530+
run: |
531+
git submodule sync && git submodule update --init --recursive
532+
# Make sure source appears older than what we're about to unpack
533+
find . -type f -print0 | xargs -0 touch -d yesterday
534+
tar xaf cln-${{ matrix.CFG }}.tar.gz
551535
552536
- name: Test
553537
env:
554538
SLOW_MACHINE: 1
555539
TEST_DEBUG: 1
540+
PYTEST_OPTS: ${{ env.PYTEST_OPTS_BASE }} --test-group-random-seed=42
556541
run: |
557-
VALGRIND=1 sg wireshark "uv run eatmydata pytest tests/ -n $(($(nproc) + 1)) ${PYTEST_OPTS} ${{ matrix.PYTEST_OPTS }}"
542+
VALGRIND=1 sg wireshark "uv run eatmydata pytest tests/ -n $(($(nproc) + 1)) ${PYTEST_OPTS} --test-group=${{ matrix.GROUP }} --test-group-count=10"
558543
- name: Upload test results
559544
if: always()
560545
uses: actions/upload-artifact@v4
@@ -564,56 +549,20 @@ jobs:
564549
if-no-files-found: ignore
565550

566551
integration-sanitizers:
567-
name: Sanitizers Test CLN
552+
name: ASan/UBSan (${{ matrix.GROUP }}/12)
568553
runs-on: ubuntu-24.04
569554
timeout-minutes: 120
570555
env:
571556
RUST_PROFILE: small
572557
SLOW_MACHINE: 1
573558
TEST_DEBUG: 1
574-
PYTEST_OPTS: -vvv --junit-xml=report.xml --timeout=1800 --durations=10 --test-group-random-seed=42
575559
needs:
576560
- compile
577561
strategy:
578562
fail-fast: false
579563
matrix:
580-
include:
581-
- NAME: ASan/UBSan (01/12)
582-
GROUP: 1
583-
PYTEST_OPTS: --test-group=1 --test-group-count=12
584-
- NAME: ASan/UBSan (02/12)
585-
GROUP: 2
586-
PYTEST_OPTS: --test-group=2 --test-group-count=12
587-
- NAME: ASan/UBSan (03/12)
588-
GROUP: 3
589-
PYTEST_OPTS: --test-group=3 --test-group-count=12
590-
- NAME: ASan/UBSan (04/12)
591-
GROUP: 4
592-
PYTEST_OPTS: --test-group=4 --test-group-count=12
593-
- NAME: ASan/UBSan (05/12)
594-
GROUP: 5
595-
PYTEST_OPTS: --test-group=5 --test-group-count=12
596-
- NAME: ASan/UBSan (06/12)
597-
GROUP: 6
598-
PYTEST_OPTS: --test-group=6 --test-group-count=12
599-
- NAME: ASan/UBSan (07/12)
600-
GROUP: 7
601-
PYTEST_OPTS: --test-group=7 --test-group-count=12
602-
- NAME: ASan/UBSan (08/12)
603-
GROUP: 8
604-
PYTEST_OPTS: --test-group=8 --test-group-count=12
605-
- NAME: ASan/UBSan (09/12)
606-
GROUP: 9
607-
PYTEST_OPTS: --test-group=9 --test-group-count=12
608-
- NAME: ASan/UBSan (10/12)
609-
GROUP: 10
610-
PYTEST_OPTS: --test-group=10 --test-group-count=12
611-
- NAME: ASan/UBSan (11/12)
612-
GROUP: 11
613-
PYTEST_OPTS: --test-group=11 --test-group-count=12
614-
- NAME: ASan/UBSan (12/12)
615-
GROUP: 12
616-
PYTEST_OPTS: --test-group=12 --test-group-count=12
564+
CFG: [compile-clang-sanitizers]
565+
GROUP: [1,2,3,4,5,6,7,8,9,10,11,12]
617566
steps:
618567
- name: Checkout
619568
uses: actions/checkout@v4
@@ -635,14 +584,20 @@ jobs:
635584
- name: Download build
636585
uses: actions/download-artifact@v4
637586
with:
638-
name: cln-compile-clang-sanitizers.tar.bz2
587+
name: cln-${{ matrix.CFG }}.tar.gz
639588

640-
- name: Unpack build
641-
run: tar -xvjf cln-compile-clang-sanitizers.tar.bz2
589+
- name: Unpack prebuilt binaries
590+
run: |
591+
git submodule sync && git submodule update --init --recursive
592+
# Make sure source appears older than what we're about to unpack
593+
find . -type f -print0 | xargs -0 touch -d yesterday
594+
tar xaf cln-${{ matrix.CFG }}.tar.gz
642595
643596
- name: Test
597+
env:
598+
PYTEST_OPTS: ${{ env.PYTEST_OPTS_BASE }} --test-group-random-seed=42
644599
run: |
645-
sg wireshark "uv run eatmydata pytest tests/ -n $(($(nproc) + 1)) ${PYTEST_OPTS} ${{ matrix.PYTEST_OPTS }}"
600+
sg wireshark "uv run eatmydata pytest tests/ -n $(($(nproc) + 1)) ${PYTEST_OPTS} --test-group=${{ matrix.GROUP }} --test-group-count=12"
646601
- name: Upload test results
647602
if: always()
648603
uses: actions/upload-artifact@v4
@@ -658,10 +613,11 @@ jobs:
658613
timeout-minutes: 30
659614
strategy:
660615
fail-fast: false
616+
matrix:
617+
CFG: [compile-gcc]
661618
env:
662619
VALGRIND: 0
663620
GENERATE_EXAMPLES: 1
664-
PYTEST_OPTS: -vvv --junit-xml=report.xml --timeout=1800 --durations=10
665621
TEST_NETWORK: regtest
666622
needs:
667623
- compile
@@ -686,13 +642,19 @@ jobs:
686642
- name: Download build
687643
uses: actions/download-artifact@v4
688644
with:
689-
name: cln-compile-gcc.tar.bz2
690-
- name: Unpack pre-built CLN
645+
name: cln-${{ matrix.CFG }}.tar.gz
646+
- name: Unpack prebuilt binaries
691647
run: |
692-
tar -xaf cln-compile-gcc.tar.bz2
648+
git submodule sync && git submodule update --init --recursive
649+
# Make sure source appears older than what we're about to unpack
650+
find . -type f -print0 | xargs -0 touch -d yesterday
651+
tar xaf cln-${{ matrix.CFG }}.tar.gz
652+
693653
- name: Test
654+
env:
655+
PYTEST_OPTS: ${{ env.PYTEST_OPTS_BASE }}
694656
run: |
695-
uv run eatmydata make -j $(($(nproc) + 1)) check-doc-examples
657+
uv run eatmydata make -j $(($(nproc) + 1)) check-doc-examples CARGO=false CC=devtools/cc-nobuild SUPPRESS_GENERATION=1
696658
- name: Upload test results
697659
if: always()
698660
uses: actions/upload-artifact@v4
@@ -707,7 +669,6 @@ jobs:
707669
timeout-minutes: 120
708670
env:
709671
RUST_PROFILE: small # Has to match the one in the compile step
710-
PYTEST_OPTS: -vvv --junit-xml=report.xml --timeout=1800 --durations=10
711672
needs:
712673
- compile
713674
strategy:
@@ -753,24 +714,25 @@ jobs:
753714
- name: Download build
754715
uses: actions/download-artifact@v4
755716
with:
756-
name: cln-${{ matrix.CFG }}.tar.bz2
717+
name: cln-${{ matrix.CFG }}.tar.gz
757718

758-
- name: Unpack pre-built CLN
759-
env:
760-
CFG: ${{ matrix.CFG }}
719+
- name: Unpack prebuilt binaries
761720
run: |
762-
tar -xaf cln-${CFG}.tar.bz2
721+
git submodule sync && git submodule update --init --recursive
722+
# Make sure source appears older than what we're about to unpack
723+
find . -type f -print0 | xargs -0 touch -d yesterday
724+
tar xaf cln-${{ matrix.CFG }}.tar.gz
763725
764726
- name: Test
765727
env:
766728
COMPILER: ${{ matrix.COMPILER }}
767729
COMPAT: 1
768-
CFG: ${{ matrix.CFG }}
769730
SLOW_MACHINE: 1
770731
TEST_DEBUG: 1
771732
TEST_DB_PROVIDER: ${{ matrix.TEST_DB_PROVIDER }}
772733
TEST_NETWORK: ${{ matrix.TEST_NETWORK }}
773734
LIGHTNINGD_POSTGRES_NO_VACUUM: 1
735+
PYTEST_OPTS: ${{ env.PYTEST_OPTS_BASE }}
774736
run: |
775737
env
776738
cat config.vars

0 commit comments

Comments
 (0)