2 name: 'Build and test everything'
10 description: 'Checkout to a specific branch'
17 permissions: # least privileges, see https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions
23 # github.workspace variable points to the Runner home folder. Container home folder defined below.
24 REPO_HOME: '/__w/${{ github.event.repository.name }}/${{ github.event.repository.name }}'
25 BUILDER_VERSION: '0.0.0-git1'
26 COVERAGE: ${{ github.repository == 'PowerDNS/pdns' && 'yes' || 'no' }}
27 LLVM_PROFILE_FILE: "/tmp/code-%p.profraw"
34 if: ${{ !github.event.schedule || vars.SCHEDULED_JOBS_BUILD_AND_TEST_ALL }}
37 image: ghcr.io/powerdns/base-pdns-ci-image/debian-12-pdns-base:master
39 ASAN_OPTIONS: detect_leaks=0
41 SANITIZERS: asan+ubsan
42 UBSAN_OPTIONS: "print_stacktrace=1:halt_on_error=1:suppressions=${{ env.REPO_HOME }}/build-scripts/UBSan.supp"
44 options: --sysctl net.ipv6.conf.all.disable_ipv6=0
47 working-directory: ./pdns-${{ env.BUILDER_VERSION }}
49 - uses: actions/checkout@v4
53 ref: ${{ inputs.branch-name }}
54 - name: get timestamp for cache
57 echo "stamp=$(/bin/date +%s)" >> "$GITHUB_OUTPUT"
60 - run: mkdir -p ~/.ccache
62 - name: let GitHub cache our ccache data
63 uses: actions/cache@v4
66 key: auth-ccache-${{ steps.get-stamp.outputs.stamp }}
67 restore-keys: auth-ccache-
68 - run: inv ci-autoconf
70 - run: inv ci-auth-configure
72 - run: inv ci-make-distdir
74 - run: inv ci-auth-configure
75 - run: inv ci-auth-make-bear # This runs under pdns-$BUILDER_VERSION/pdns/
76 - run: inv ci-auth-install-remotebackend-test-deps
77 - run: inv ci-auth-run-unit-tests
78 - run: inv generate-coverage-info ./testrunner $GITHUB_WORKSPACE
79 if: ${{ env.COVERAGE == 'yes' }}
80 working-directory: ./pdns-${{ env.BUILDER_VERSION }}/pdns
81 - name: Coveralls Parallel auth unit
82 if: ${{ env.COVERAGE == 'yes' }}
83 uses: coverallsapp/github-action@v2
85 flag-name: auth-unit-${{ matrix.sanitizers }}
86 path-to-lcov: $GITHUB_WORKSPACE/coverage.lcov
89 - run: inv ci-make-install
91 - run: echo "normalized-branch-name=${{ inputs.branch-name || github.ref_name }}" | tr "/" "-" >> "$GITHUB_ENV"
92 - name: Store the binaries
93 uses: actions/upload-artifact@v4 # this takes 30 seconds, maybe we want to tar
95 name: pdns-auth-${{ env.normalized-branch-name }}
101 if: ${{ !github.event.schedule || vars.SCHEDULED_JOBS_BUILD_AND_TEST_ALL }}
102 runs-on: ubuntu-22.04
105 sanitizers: [ubsan+asan, tsan]
107 image: ghcr.io/powerdns/base-pdns-ci-image/debian-12-pdns-base:master
109 ASAN_OPTIONS: detect_leaks=0
110 SANITIZERS: ${{ matrix.sanitizers }}
111 UBSAN_OPTIONS: "print_stacktrace=1:halt_on_error=1:suppressions=${{ env.REPO_HOME }}/build-scripts/UBSan.supp"
113 options: --sysctl net.ipv6.conf.all.disable_ipv6=0
116 working-directory: ./pdns/recursordist/pdns-recursor-${{ env.BUILDER_VERSION }}
118 - uses: actions/checkout@v4
121 submodules: recursive
122 ref: ${{ inputs.branch-name }}
123 - name: get timestamp for cache
126 echo "stamp=$(/bin/date +%s)" >> "$GITHUB_OUTPUT"
129 - run: mkdir -p ~/.ccache
131 - name: let GitHub cache our ccache data
132 uses: actions/cache@v4
135 key: recursor-${{ matrix.sanitizers }}-ccache-${{ steps.get-stamp.outputs.stamp }}
136 restore-keys: recursor-${{ matrix.sanitizers }}-ccache-
137 - run: inv ci-install-rust ${{ env.REPO_HOME }}
138 working-directory: ./pdns/recursordist/
139 - run: inv ci-autoconf
140 working-directory: ./pdns/recursordist/
141 - run: inv ci-rec-configure
142 working-directory: ./pdns/recursordist/
143 - run: inv ci-make-distdir
144 working-directory: ./pdns/recursordist/
145 - run: inv ci-rec-configure
146 - run: inv ci-rec-make-bear
147 - run: inv ci-rec-run-unit-tests
148 - run: inv generate-coverage-info ./testrunner $GITHUB_WORKSPACE
149 if: ${{ env.COVERAGE == 'yes' && matrix.sanitizers != 'tsan' }}
150 - name: Coveralls Parallel rec unit
151 if: ${{ env.COVERAGE == 'yes' && matrix.sanitizers != 'tsan' }}
152 uses: coverallsapp/github-action@v2
154 flag-name: rec-unit-${{ matrix.sanitizers }}
155 path-to-lcov: $GITHUB_WORKSPACE/coverage.lcov
158 - run: inv ci-make-install
160 - run: echo "normalized-branch-name=${{ inputs.branch-name || github.ref_name }}" | tr "/" "-" >> "$GITHUB_ENV"
161 - name: Store the binaries
162 uses: actions/upload-artifact@v4 # this takes 30 seconds, maybe we want to tar
164 name: pdns-recursor-${{ matrix.sanitizers }}-${{ env.normalized-branch-name }}
165 path: /opt/pdns-recursor
170 if: ${{ !github.event.schedule || vars.SCHEDULED_JOBS_BUILD_AND_TEST_ALL }}
171 runs-on: ubuntu-22.04
174 sanitizers: [ubsan+asan, tsan]
175 features: [least, full]
180 image: ghcr.io/powerdns/base-pdns-ci-image/debian-12-pdns-base:master
182 ASAN_OPTIONS: detect_leaks=0
183 SANITIZERS: ${{ matrix.sanitizers }}
184 UBSAN_OPTIONS: "print_stacktrace=1:halt_on_error=1:suppressions=${{ env.REPO_HOME }}/build-scripts/UBSan.supp"
187 options: --sysctl net.ipv6.conf.all.disable_ipv6=0
190 working-directory: ./pdns/dnsdistdist/dnsdist-${{ env.BUILDER_VERSION }}
192 - uses: actions/checkout@v4
195 submodules: recursive
196 ref: ${{ inputs.branch-name }}
197 - name: get timestamp for cache
200 echo "stamp=$(/bin/date +%s)" >> "$GITHUB_OUTPUT"
203 - run: mkdir -p ~/.ccache
205 - name: let GitHub cache our ccache data
206 uses: actions/cache@v4
209 key: dnsdist-${{ matrix.features }}-${{ matrix.sanitizers }}-ccache-${{ steps.get-stamp.outputs.stamp }}
210 restore-keys: dnsdist-${{ matrix.features }}-${{ matrix.sanitizers }}-ccache-
211 - run: inv ci-install-rust ${{ env.REPO_HOME }}
212 working-directory: ./pdns/dnsdistdist/
213 - run: inv ci-build-and-install-quiche
214 working-directory: ./pdns/dnsdistdist/
215 - run: inv ci-autoconf
216 working-directory: ./pdns/dnsdistdist/
217 - run: inv ci-dnsdist-configure ${{ matrix.features }}
218 working-directory: ./pdns/dnsdistdist/
219 - run: inv ci-make-distdir
220 working-directory: ./pdns/dnsdistdist/
221 - run: inv ci-dnsdist-configure ${{ matrix.features }}
222 - run: inv ci-dnsdist-make-bear
223 - run: inv ci-dnsdist-run-unit-tests
224 - run: inv generate-coverage-info ./testrunner $GITHUB_WORKSPACE
225 if: ${{ env.COVERAGE == 'yes' && matrix.sanitizers != 'tsan' }}
226 - name: Coveralls Parallel dnsdist unit
227 if: ${{ env.COVERAGE == 'yes' && matrix.sanitizers != 'tsan' }}
228 uses: coverallsapp/github-action@v2
230 flag-name: dnsdist-unit-${{ matrix.features }}-${{ matrix.sanitizers }}
231 path-to-lcov: $GITHUB_WORKSPACE/coverage.lcov
234 - run: inv ci-make-install
236 - run: echo "normalized-branch-name=${{ inputs.branch-name || github.ref_name }}" | tr "/" "-" >> "$GITHUB_ENV"
237 - name: Store the binaries
238 uses: actions/upload-artifact@v4 # this takes 30 seconds, maybe we want to tar
240 name: dnsdist-${{ matrix.features }}-${{ matrix.sanitizers }}-${{ env.normalized-branch-name }}
246 runs-on: ubuntu-22.04
248 image: ghcr.io/powerdns/base-pdns-ci-image/debian-12-pdns-base:master
250 UBSAN_OPTIONS: "print_stacktrace=1:halt_on_error=1:suppressions=${{ env.REPO_HOME }}/build-scripts/UBSan.supp"
251 ASAN_OPTIONS: detect_leaks=0
252 TSAN_OPTIONS: "halt_on_error=1:suppressions=${{ env.REPO_HOME }}/pdns/dnsdistdist/dnsdist-tsan.supp"
253 AUTH_BACKEND_IP_ADDR: "172.17.0.1"
254 options: --sysctl net.ipv6.conf.all.disable_ipv6=0
259 image: coscale/docker-sleep
265 image: coscale/docker-sleep
269 image: ${{ matrix.image }}
271 POSTGRES_USER: runner
272 POSTGRES_HOST_AUTH_METHOD: trust
273 MYSQL_ALLOW_EMPTY_PASSWORD: 1
277 # FIXME: this works around dist-upgrade stopping all docker containers. dist-upgrade is huge on these images anyway. Perhaps we do want to run our tasks in a Docker container too.
281 - uses: actions/checkout@v4
284 submodules: recursive
285 ref: ${{ inputs.branch-name }}
286 - run: echo "normalized-branch-name=${{ inputs.branch-name || github.ref_name }}" | tr "/" "-" >> "$GITHUB_ENV"
287 - name: Fetch the binaries
288 uses: actions/download-artifact@v4
290 name: pdns-auth-${{ env.normalized-branch-name }}
293 - run: inv install-clang-runtime
294 - run: inv install-auth-test-deps -b ${{ matrix.backend }}
295 - run: inv test-api auth -b ${{ matrix.backend }}
296 - run: inv generate-coverage-info /opt/pdns-auth/sbin/pdns_server $GITHUB_WORKSPACE
297 if: ${{ env.COVERAGE == 'yes' }}
298 - name: Coveralls Parallel auth API ${{ matrix.backend }}
299 if: ${{ env.COVERAGE == 'yes' }}
300 uses: coverallsapp/github-action@v2
302 flag-name: auth-api-${{ matrix.backend }}
303 path-to-lcov: $GITHUB_WORKSPACE/coverage.lcov
309 runs-on: ubuntu-22.04
311 image: ghcr.io/powerdns/base-pdns-ci-image/debian-12-pdns-base:master
313 UBSAN_OPTIONS: "print_stacktrace=1:halt_on_error=1:suppressions=${{ env.REPO_HOME }}/build-scripts/UBSan.supp"
314 ASAN_OPTIONS: detect_leaks=0
315 LDAPHOST: ldap://ldapserver/
316 ODBCINI: /github/home/.odbc.ini
317 AUTH_BACKEND_IP_ADDR: "172.17.0.1"
318 options: --sysctl net.ipv6.conf.all.disable_ipv6=0
323 image: coscale/docker-sleep
329 MYSQL_ALLOW_EMPTY_PASSWORD: 1
335 MYSQL_ALLOW_EMPTY_PASSWORD: 1
341 POSTGRES_USER: runner
342 POSTGRES_HOST_AUTH_METHOD: trust
345 - backend: gsqlite3 # this also runs regression-tests.nobackend and pdnsutil test-algorithms
346 image: coscale/docker-sleep
350 image: coscale/docker-sleep
354 image: coscale/docker-sleep
358 image: coscale/docker-sleep
362 image: coscale/docker-sleep
366 image: coscale/docker-sleep
370 image: coscale/docker-sleep
373 - backend: godbc_sqlite3
374 image: coscale/docker-sleep
377 - backend: godbc_mssql
378 image: mcr.microsoft.com/mssql/server:2017-GA-ubuntu
381 SA_PASSWORD: 'SAsa12%%-not-a-secret-password'
385 image: powerdns/ldap-regress:1.2.4-1
388 CONTAINER_LOG_LEVEL: 4
391 - backend: geoip_mmdb
392 image: coscale/docker-sleep
398 image: ${{ matrix.image }}
399 env: ${{ matrix.env }}
400 ports: ${{ matrix.ports }}
401 # FIXME: this works around dist-upgrade stopping all docker containers. dist-upgrade is huge on these images anyway. Perhaps we do want to run our tasks in a Docker container too.
405 - uses: actions/checkout@v4
408 submodules: recursive
409 ref: ${{ inputs.branch-name }}
410 - run: echo "normalized-branch-name=${{ inputs.branch-name || github.ref_name }}" | tr "/" "-" >> "$GITHUB_ENV"
411 - name: Fetch the binaries
412 uses: actions/download-artifact@v4
414 name: pdns-auth-${{ env.normalized-branch-name }}
416 # FIXME: install recursor for backends that have ALIAS
417 - run: inv install-clang-runtime
418 - run: inv install-auth-test-deps -b ${{ matrix.backend }}
419 - run: inv test-auth-backend -b ${{ matrix.backend }}
420 - run: inv generate-coverage-info /opt/pdns-auth/sbin/pdns_server $GITHUB_WORKSPACE
421 if: ${{ env.COVERAGE == 'yes' }}
422 - name: Coveralls Parallel auth backend ${{ matrix.backend }}
423 if: ${{ env.COVERAGE == 'yes' }}
424 uses: coverallsapp/github-action@v2
426 flag-name: auth-backend-${{ matrix.backend }}
427 path-to-lcov: $GITHUB_WORKSPACE/coverage.lcov
433 runs-on: ubuntu-22.04
435 image: ghcr.io/powerdns/base-pdns-ci-image/debian-12-pdns-base:master
437 UBSAN_OPTIONS: "print_stacktrace=1:halt_on_error=1:suppressions=${{ env.REPO_HOME }}/build-scripts/UBSan.supp"
438 ASAN_OPTIONS: detect_leaks=0
439 options: --sysctl net.ipv6.conf.all.disable_ipv6=0
441 - uses: actions/checkout@v4
444 submodules: recursive
445 ref: ${{ inputs.branch-name }}
446 - run: echo "normalized-branch-name=${{ inputs.branch-name || github.ref_name }}" | tr "/" "-" >> "$GITHUB_ENV"
447 - name: Fetch the binaries
448 uses: actions/download-artifact@v4
450 name: pdns-auth-${{ env.normalized-branch-name }}
452 - run: inv install-clang-runtime
453 - run: inv install-auth-test-deps
454 - run: inv test-ixfrdist
455 - run: inv generate-coverage-info /opt/pdns-auth/bin/ixfrdist $GITHUB_WORKSPACE
456 if: ${{ env.COVERAGE == 'yes' }}
457 - name: Coveralls Parallel ixfrdist
458 if: ${{ env.COVERAGE == 'yes' }}
459 uses: coverallsapp/github-action@v2
462 path-to-lcov: $GITHUB_WORKSPACE/coverage.lcov
467 needs: build-recursor
468 runs-on: ubuntu-22.04
471 sanitizers: [ubsan+asan, tsan]
473 dist_release_name: [bookworm]
474 pdns_repo_version: ['48']
476 image: ghcr.io/powerdns/base-pdns-ci-image/debian-12-pdns-base:master
478 UBSAN_OPTIONS: "print_stacktrace=1:halt_on_error=1:suppressions=${{ env.REPO_HOME }}/build-scripts/UBSan.supp"
479 ASAN_OPTIONS: detect_leaks=0
480 TSAN_OPTIONS: "halt_on_error=1:suppressions=${{ env.REPO_HOME }}/pdns/recursordist/recursor-tsan.supp"
481 options: --sysctl net.ipv6.conf.all.disable_ipv6=0
483 - uses: actions/checkout@v4
486 submodules: recursive
487 ref: ${{ inputs.branch-name }}
488 - run: echo "normalized-branch-name=${{ inputs.branch-name || github.ref_name }}" | tr "/" "-" >> "$GITHUB_ENV"
489 - name: Fetch the binaries
490 uses: actions/download-artifact@v4
492 name: pdns-recursor-${{ matrix.sanitizers }}-${{ env.normalized-branch-name }}
493 path: /opt/pdns-recursor
495 - run: inv add-auth-repo ${{ matrix.dist_name }} ${{ matrix.dist_release_name }} ${{ matrix.pdns_repo_version }}
496 - run: inv install-clang-runtime
497 - run: inv install-rec-test-deps
498 - run: inv test-api recursor
499 - run: inv generate-coverage-info /opt/pdns-recursor/sbin/pdns_recursor $GITHUB_WORKSPACE
500 if: ${{ env.COVERAGE == 'yes' && matrix.sanitizers != 'tsan' }}
501 - name: Coveralls Parallel recursor API
502 if: ${{ env.COVERAGE == 'yes' && matrix.sanitizers != 'tsan' }}
503 uses: coverallsapp/github-action@v2
506 path-to-lcov: $GITHUB_WORKSPACE/coverage.lcov
510 test-recursor-regression:
511 needs: build-recursor
512 runs-on: ubuntu-22.04
515 sanitizers: [ubsan+asan, tsan]
517 dist_release_name: [bookworm]
518 pdns_repo_version: ['48']
520 image: ghcr.io/powerdns/base-pdns-ci-image/debian-12-pdns-base:master
522 UBSAN_OPTIONS: 'print_stacktrace=1:halt_on_error=1:suppressions=${{ env.REPO_HOME }}/build-scripts/UBSan.supp'
523 ASAN_OPTIONS: detect_leaks=0
524 TSAN_OPTIONS: "halt_on_error=1:suppressions=${{ env.REPO_HOME }}/pdns/recursordist/recursor-tsan.supp"
525 options: --sysctl net.ipv6.conf.all.disable_ipv6=0
527 # - uses: PowerDNS/pdns/set-ubuntu-mirror@meta
528 - uses: actions/checkout@v4
531 submodules: recursive
532 ref: ${{ inputs.branch-name }}
533 - run: echo "normalized-branch-name=${{ inputs.branch-name || github.ref_name }}" | tr "/" "-" >> "$GITHUB_ENV"
534 - name: Fetch the binaries
535 uses: actions/download-artifact@v4
537 name: pdns-recursor-${{ matrix.sanitizers }}-${{ env.normalized-branch-name }}
538 path: /opt/pdns-recursor
540 - run: inv add-auth-repo ${{ matrix.dist_name }} ${{ matrix.dist_release_name }} ${{ matrix.pdns_repo_version }}
541 - run: inv install-clang-runtime
542 - run: inv install-rec-test-deps
543 - run: inv test-regression-recursor
544 - run: inv generate-coverage-info /opt/pdns-recursor/sbin/pdns_recursor $GITHUB_WORKSPACE
545 if: ${{ env.COVERAGE == 'yes' && matrix.sanitizers != 'tsan' }}
546 - name: Coveralls Parallel recursor regression
547 if: ${{ env.COVERAGE == 'yes' && matrix.sanitizers != 'tsan' }}
548 uses: coverallsapp/github-action@v2
550 flag-name: rec-regression
551 path-to-lcov: $GITHUB_WORKSPACE/coverage.lcov
556 name: 'test rec *mini* bulk'
557 needs: build-recursor
558 runs-on: ubuntu-22.04
561 sanitizers: [ubsan+asan, tsan]
562 threads: [1, 2, 3, 4, 8]
566 image: ghcr.io/powerdns/base-pdns-ci-image/debian-12-pdns-base:master
568 UBSAN_OPTIONS: 'print_stacktrace=1:halt_on_error=1:suppressions=${{ env.REPO_HOME }}/build-scripts/UBSan.supp'
569 ASAN_OPTIONS: detect_leaks=0
570 TSAN_OPTIONS: "halt_on_error=1:suppressions=${{ env.REPO_HOME }}/pdns/recursordist/recursor-tsan.supp"
571 options: --sysctl net.ipv6.conf.all.disable_ipv6=0
573 - uses: actions/checkout@v4
576 submodules: recursive
577 ref: ${{ inputs.branch-name }}
578 - run: echo "normalized-branch-name=${{ inputs.branch-name || github.ref_name }}" | tr "/" "-" >> "$GITHUB_ENV"
579 - name: Fetch the binaries
580 uses: actions/download-artifact@v4
582 name: pdns-recursor-${{ matrix.sanitizers }}-${{ env.normalized-branch-name }}
583 path: /opt/pdns-recursor
584 - run: inv install-clang-runtime
585 - run: inv install-rec-bulk-deps
586 - run: inv test-bulk-recursor ${{ matrix.threads }} ${{ matrix.mthreads }} ${{ matrix.shards }}
587 - run: inv generate-coverage-info /opt/pdns-recursor/sbin/pdns_recursor $GITHUB_WORKSPACE
588 if: ${{ env.COVERAGE == 'yes' && matrix.sanitizers != 'tsan' }}
589 - name: Coveralls Parallel recursor bulk
590 if: ${{ env.COVERAGE == 'yes' && matrix.sanitizers != 'tsan' }}
591 uses: coverallsapp/github-action@v2
593 flag-name: rec-regression-bulk
594 path-to-lcov: $GITHUB_WORKSPACE/coverage.lcov
598 test-dnsdist-regression:
600 runs-on: ubuntu-22.04
603 sanitizers: [ubsan+asan, tsan]
605 image: ghcr.io/powerdns/base-pdns-ci-image/debian-12-pdns-base:master
607 UBSAN_OPTIONS: "print_stacktrace=1:halt_on_error=1:suppressions=${{ env.REPO_HOME }}/build-scripts/UBSan.supp"
608 # Disabling (intercept_send=0) the custom send wrappers for ASAN and TSAN because they cause the tools to report a race that doesn't exist on actual implementations of send(), see https://github.com/google/sanitizers/issues/1498
609 ASAN_OPTIONS: detect_leaks=0:intercept_send=0
610 TSAN_OPTIONS: "halt_on_error=1:intercept_send=0:suppressions=${{ env.REPO_HOME }}/pdns/dnsdistdist/dnsdist-tsan.supp"
611 # IncludeDir tests are disabled because of a weird interaction between TSAN and these tests which ever only happens on GH actions
612 SKIP_INCLUDEDIR_TESTS: yes
613 SANITIZERS: ${{ matrix.sanitizers }}
615 options: --sysctl net.ipv6.conf.all.disable_ipv6=0
617 - uses: actions/checkout@v4
620 submodules: recursive
621 ref: ${{ inputs.branch-name }}
622 - run: echo "normalized-branch-name=${{ inputs.branch-name || github.ref_name }}" | tr "/" "-" >> "$GITHUB_ENV"
623 - name: Fetch the binaries
624 uses: actions/download-artifact@v4
626 name: dnsdist-full-${{ matrix.sanitizers }}-${{ env.normalized-branch-name }}
628 - run: inv install-clang-runtime
629 - run: inv install-dnsdist-test-deps
630 - run: inv test-dnsdist
631 - run: inv generate-coverage-info /opt/dnsdist/bin/dnsdist $GITHUB_WORKSPACE
632 if: ${{ env.COVERAGE == 'yes' && matrix.sanitizers != 'tsan' }}
633 - name: Coveralls Parallel dnsdist regression
634 if: ${{ env.COVERAGE == 'yes' && matrix.sanitizers != 'tsan' }}
635 uses: coverallsapp/github-action@v2
637 flag-name: dnsdist-regression-full-${{ matrix.sanitizers }}
638 path-to-lcov: $GITHUB_WORKSPACE/coverage.lcov
642 swagger-syntax-check:
643 if: ${{ !github.event.schedule || vars.SCHEDULED_JOBS_BUILD_AND_TEST_ALL }}
644 runs-on: ubuntu-22.04
645 # FIXME: https://github.com/PowerDNS/pdns/pull/12880
647 # image: ghcr.io/powerdns/base-pdns-ci-image/debian-11-pdns-base:master
648 # options: --sysctl net.ipv6.conf.all.disable_ipv6=0
650 - uses: PowerDNS/pdns/set-ubuntu-mirror@meta
651 - uses: actions/checkout@v4
654 submodules: recursive
655 ref: ${{ inputs.branch-name }}
656 - run: build-scripts/gh-actions-setup-inv # this runs apt update+upgrade
657 - run: inv install-swagger-tools
658 - run: inv swagger-syntax-check
665 - swagger-syntax-check
668 - test-dnsdist-regression
671 - test-recursor-regression
673 if: success() || failure()
674 runs-on: ubuntu-22.04
676 - name: Coveralls Parallel Finished
677 if: ${{ env.COVERAGE == 'yes' }}
678 uses: coverallsapp/github-action@v2
680 parallel-finished: true
681 - name: Install jq and yq
682 run: "sudo snap install jq yq"
683 - name: Fail job if any of the previous jobs failed
684 run: "for i in `echo '${{ toJSON(needs) }}' | jq '.[].result' | tr -d '\"'`; do if [[ $i == 'failure' ]]; then echo '${{ toJSON(needs) }}'; exit 1; fi; done;"
685 - uses: actions/checkout@v4
688 submodules: recursive
689 ref: ${{ inputs.branch-name }}
690 - name: Get list of jobs in the workflow
691 run: "yq e '.jobs | keys' .github/workflows/build-and-test-all.yml | awk '{print $2}' | grep -v collect | sort | tee /tmp/workflow-jobs-list.yml"
692 - name: Get list of prerequisite jobs
693 run: "echo '${{ toJSON(needs) }}' | jq 'keys | .[]' | tr -d '\"' | sort | tee /tmp/workflow-needs-list.yml"
694 - name: Fail if there is a job missing on the needs list
695 run: "if ! diff -q /tmp/workflow-jobs-list.yml /tmp/workflow-needs-list.yml; then exit 1; fi"
697 # FIXME: if we can make upload/download-artifact fasts, running unit tests outside of build can let regression tests start earlier