From: romeroalx Date: Fri, 21 Mar 2025 13:40:50 +0000 (+0100) Subject: build-and-test-all: use meson binaries in regression tests X-Git-Tag: dnsdist-2.0.0-beta1~41^2~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=692d9e713db24b88d908abb535e08b8d9a39cb91;p=thirdparty%2Fpdns.git build-and-test-all: use meson binaries in regression tests --- diff --git a/.github/workflows/build-and-test-all.yml b/.github/workflows/build-and-test-all.yml index 34ce38a870..6b35663934 100644 --- a/.github/workflows/build-and-test-all.yml +++ b/.github/workflows/build-and-test-all.yml @@ -125,13 +125,18 @@ jobs: fail-on-error: false - run: ${{ env.INV_CMD }} ci-auth-install ${{ matrix.builder == 'meson' && '--meson' || '' }} - run: ccache -s - - if: ${{ matrix.builder != 'meson' }} - run: echo "normalized-branch-name=$BRANCH_NAME" | tr "/" "-" >> "$GITHUB_ENV" - - if: ${{ matrix.builder != 'meson' }} + - name: Prepare binaries folder + if: ${{ matrix.builder == 'meson' }} + run: | + echo "normalized-branch-name=$BRANCH_NAME" | tr "/" "-" >> "$GITHUB_ENV" + mkdir -p /opt/pdns-auth/bin + for i in $(find . -maxdepth 1 -type f -executable); do cp ${i} /opt/pdns-auth/bin/; done + mkdir -p /opt/pdns-auth/sbin; mv /opt/pdns-auth/bin/pdns-auth /opt/pdns-auth/sbin/ + - if: ${{ matrix.builder == 'meson' }} name: Store the binaries uses: actions/upload-artifact@v4 # this takes 30 seconds, maybe we want to tar with: - name: pdns-auth-${{ env.normalized-branch-name }} + name: pdns-auth-${{ matrix.builder}}-${{ env.normalized-branch-name }} path: /opt/pdns-auth retention-days: 1 @@ -142,14 +147,12 @@ jobs: needs: get-runner-container-image strategy: matrix: + builder: [autotools, meson] sanitizers: [asan+ubsan, tsan] features: [least, full] - builder: [autotools, meson] exclude: - sanitizers: tsan features: least - - builder: meson - sanitizers: tsan fail-fast: false container: image: "${{ needs.get-runner-container-image.outputs.id }}:${{ needs.get-runner-container-image.outputs.tag }}" @@ -210,13 +213,13 @@ jobs: fail-on-error: false - run: ${{ env.INV_CMD }} ci-rec-install ${{ matrix.builder == 'meson' && '--meson' || '' }} - run: ccache -s - - if: ${{ matrix.builder != 'meson' }} + - if: ${{ matrix.builder == 'meson' }} run: echo "normalized-branch-name=$BRANCH_NAME" | tr "/" "-" >> "$GITHUB_ENV" - - if: ${{ matrix.builder != 'meson' }} + - if: ${{ matrix.builder == 'meson' }} name: Store the binaries uses: actions/upload-artifact@v4 # this takes 30 seconds, maybe we want to tar with: - name: pdns-recursor-${{ matrix.features }}-${{ matrix.sanitizers }}-${{ env.normalized-branch-name }} + name: pdns-recursor-${{ matrix.features }}-${{ matrix.sanitizers }}-${{ matrix.builder}}-${{ env.normalized-branch-name }} path: /opt/pdns-recursor retention-days: 1 @@ -233,8 +236,6 @@ jobs: exclude: - sanitizers: tsan features: least - - sanitizers: tsan - builder: meson fail-fast: false container: image: "${{ needs.get-runner-container-image.outputs.id }}:${{ needs.get-runner-container-image.outputs.tag }}" @@ -306,12 +307,16 @@ jobs: parallel: true allow-empty: true fail-on-error: false - - run: ${{ env.INV_CMD }} ci-make-install - if: ${{ matrix.builder == 'autotools' }} + - run: ${{ env.INV_CMD }} ci-dnsdist-install ${{ matrix.builder == 'meson' && '--meson' || '' }} - run: ccache -s - - run: echo "normalized-branch-name=$BRANCH_NAME" | tr "/" "-" >> "$GITHUB_ENV" + - name: Prepare binaries folder + if: ${{ matrix.builder == 'meson' }} + run: | + echo "normalized-branch-name=$BRANCH_NAME" | tr "/" "-" >> "$GITHUB_ENV" + mkdir -p /opt/dnsdist/bin + for i in $(find . -maxdepth 1 -type f -executable); do cp ${i} /opt/dnsdist/bin/; done - name: Store the binaries - if: ${{ matrix.builder == 'autotools' }} + if: ${{ matrix.builder == 'meson' }} uses: actions/upload-artifact@v4 # this takes 30 seconds, maybe we want to tar with: name: dnsdist-${{ matrix.features }}-${{ matrix.sanitizers }}-${{ matrix.builder}}-${{ env.normalized-branch-name }} @@ -367,7 +372,7 @@ jobs: - name: Fetch the binaries uses: actions/download-artifact@v4 with: - name: pdns-auth-${{ env.normalized-branch-name }} + name: pdns-auth-meson-${{ env.normalized-branch-name }} path: /opt/pdns-auth - name: install pip build dependencies run: | @@ -377,7 +382,7 @@ jobs: - run: ${{ env.INV_CMD }} install-clang-runtime - run: ${{ env.INV_CMD }} install-auth-test-deps -b ${{ matrix.backend }} - run: ${{ env.INV_CMD }} test-api auth -b ${{ matrix.backend }} - - run: ${{ env.INV_CMD }} generate-coverage-info /opt/pdns-auth/sbin/pdns_server $GITHUB_WORKSPACE + - run: ${{ env.INV_CMD }} generate-coverage-info /opt/pdns-auth/sbin/pdns-auth $GITHUB_WORKSPACE if: ${{ env.COVERAGE == 'yes' }} - name: Coveralls Parallel auth API ${{ matrix.backend }} if: ${{ env.COVERAGE == 'yes' }} @@ -499,7 +504,7 @@ jobs: - name: Fetch the binaries uses: actions/download-artifact@v4 with: - name: pdns-auth-${{ env.normalized-branch-name }} + name: pdns-auth-meson-${{ env.normalized-branch-name }} path: /opt/pdns-auth # FIXME: install recursor for backends that have ALIAS - name: install pip build dependencies @@ -509,7 +514,7 @@ jobs: - run: ${{ env.INV_CMD }} install-clang-runtime - run: ${{ env.INV_CMD }} install-auth-test-deps -b ${{ matrix.backend }} - run: ${{ env.INV_CMD }} test-auth-backend -b ${{ matrix.backend }} - - run: ${{ env.INV_CMD }} generate-coverage-info /opt/pdns-auth/sbin/pdns_server $GITHUB_WORKSPACE + - run: ${{ env.INV_CMD }} generate-coverage-info /opt/pdns-auth/sbin/pdns-auth $GITHUB_WORKSPACE if: ${{ env.COVERAGE == 'yes' }} - name: Coveralls Parallel auth backend ${{ matrix.backend }} if: ${{ env.COVERAGE == 'yes' }} @@ -543,7 +548,7 @@ jobs: - name: Fetch the binaries uses: actions/download-artifact@v4 with: - name: pdns-auth-${{ env.normalized-branch-name }} + name: pdns-auth-meson-${{ env.normalized-branch-name }} path: /opt/pdns-auth - name: install pip build dependencies run: | @@ -593,7 +598,7 @@ jobs: - name: Fetch the binaries uses: actions/download-artifact@v4 with: - name: pdns-recursor-full-${{ matrix.sanitizers }}-${{ env.normalized-branch-name }} + name: pdns-recursor-full-${{ matrix.sanitizers }}-meson-${{ env.normalized-branch-name }} path: /opt/pdns-recursor - name: install pip build dependencies run: | @@ -647,7 +652,7 @@ jobs: - name: Fetch the binaries uses: actions/download-artifact@v4 with: - name: pdns-recursor-full-${{ matrix.sanitizers }}-${{ env.normalized-branch-name }} + name: pdns-recursor-full-${{ matrix.sanitizers }}-meson-${{ env.normalized-branch-name }} path: /opt/pdns-recursor - name: install pip build dependencies run: | @@ -702,7 +707,7 @@ jobs: - name: Fetch the binaries uses: actions/download-artifact@v4 with: - name: pdns-recursor-full-${{ matrix.sanitizers }}-${{ env.normalized-branch-name }} + name: pdns-recursor-full-${{ matrix.sanitizers }}-meson-${{ env.normalized-branch-name }} path: /opt/pdns-recursor - name: install pip build dependencies run: | @@ -748,7 +753,7 @@ jobs: - name: Fetch the binaries uses: actions/download-artifact@v4 with: - name: pdns-recursor-full-${{ matrix.sanitizers }}-${{ env.normalized-branch-name }} + name: pdns-recursor-full-${{ matrix.sanitizers }}-meson-${{ env.normalized-branch-name }} path: /opt/pdns-recursor - run: build-scripts/gh-actions-setup-inv-no-dist-upgrade - name: install pip build dependencies @@ -809,7 +814,7 @@ jobs: - name: Fetch the binaries uses: actions/download-artifact@v4 with: - name: dnsdist-full-${{ matrix.sanitizers }}-autotools-${{ env.normalized-branch-name }} + name: dnsdist-full-${{ matrix.sanitizers }}-meson-${{ env.normalized-branch-name }} path: /opt/dnsdist - name: install pip build dependencies run: | diff --git a/tasks.py b/tasks.py index 6062e6e464..7993c8068b 100644 --- a/tasks.py +++ b/tasks.py @@ -300,7 +300,6 @@ def install_rec_test_deps(c): # FIXME: rename this, we do way more than apt-get jq libfaketime lua-posix lua-socket bc authbind \ python3-venv python3-dev default-libmysqlclient-dev libpq-dev \ protobuf-compiler snmpd prometheus') - c.run('chmod +x /opt/pdns-recursor/bin/* /opt/pdns-recursor/sbin/*') setup_authbind(c) @@ -936,12 +935,17 @@ def ci_auth_install(c, meson=False): c.run('make install') # FIXME: this builds auth docs - again @task -def ci_make_install(c): - c.run('make install') +def ci_rec_install(c, meson=False): + if meson: + c.run('meson install') + else: + c.run('make install') @task -def ci_rec_install(c, meson=False): - if not meson: +def ci_dnsdist_install(c, meson=False): + if meson: + c.run('meson install') + else: c.run('make install') @task @@ -964,7 +968,7 @@ def test_api(c, product, backend=''): c.run(f'PDNSRECURSOR=/opt/pdns-recursor/sbin/pdns_recursor ./runtests recursor {backend}') elif product == 'auth': with c.cd('regression-tests.api'): - c.run(f'PDNSSERVER=/opt/pdns-auth/sbin/pdns_server PDNSUTIL=/opt/pdns-auth/bin/pdnsutil SDIG=/opt/pdns-auth/bin/sdig MYSQL_HOST={auth_backend_ip_addr} PGHOST={auth_backend_ip_addr} PGPORT=5432 ./runtests authoritative {backend}') + c.run(f'PDNSSERVER=/opt/pdns-auth/sbin/pdns-auth PDNSUTIL=/opt/pdns-auth/bin/pdns-auth-util SDIG=/opt/pdns-auth/bin/sdig MYSQL_HOST={auth_backend_ip_addr} PGHOST={auth_backend_ip_addr} PGPORT=5432 ./runtests authoritative {backend}') else: raise Failure('unknown product') @@ -1113,7 +1117,7 @@ def setup_softhsm(c): @task def test_auth_backend(c, backend): - pdns_auth_env_vars = f'PDNS=/opt/pdns-auth/sbin/pdns_server PDNS2=/opt/pdns-auth/sbin/pdns_server SDIG=/opt/pdns-auth/bin/sdig NOTIFY=/opt/pdns-auth/bin/pdns_notify NSEC3DIG=/opt/pdns-auth/bin/nsec3dig SAXFR=/opt/pdns-auth/bin/saxfr ZONE2SQL=/opt/pdns-auth/bin/zone2sql ZONE2LDAP=/opt/pdns-auth/bin/zone2ldap ZONE2JSON=/opt/pdns-auth/bin/zone2json PDNSUTIL=/opt/pdns-auth/bin/pdnsutil PDNSCONTROL=/opt/pdns-auth/bin/pdns_control PDNSSERVER=/opt/pdns-auth/sbin/pdns_server SDIG=/opt/pdns-auth/bin/sdig GMYSQLHOST={auth_backend_ip_addr} GMYSQL2HOST={auth_backend_ip_addr} MYSQL_HOST={auth_backend_ip_addr} PGHOST={auth_backend_ip_addr} PGPORT=5432' + pdns_auth_env_vars = f'PDNS=/opt/pdns-auth/sbin/pdns-auth PDNS2=/opt/pdns-auth/sbin/pdns-auth SDIG=/opt/pdns-auth/bin/sdig NOTIFY=/opt/pdns-auth/bin/pdns-auth-notify NSEC3DIG=/opt/pdns-auth/bin/nsec3dig SAXFR=/opt/pdns-auth/bin/saxfr ZONE2SQL=/opt/pdns-auth/bin/pdns-zone2sql ZONE2LDAP=/opt/pdns-auth/bin/pdns-zone2ldap ZONE2JSON=/opt/pdns-auth/bin/pdns-zone2json PDNSUTIL=/opt/pdns-auth/bin/pdns-auth-util PDNSCONTROL=/opt/pdns-auth/bin/pdns-auth-control PDNSSERVER=/opt/pdns-auth/sbin/pdns-auth SDIG=/opt/pdns-auth/bin/sdig GMYSQLHOST={auth_backend_ip_addr} GMYSQL2HOST={auth_backend_ip_addr} MYSQL_HOST={auth_backend_ip_addr} PGHOST={auth_backend_ip_addr} PGPORT=5432' backend_env_vars = '' if backend == 'remote': @@ -1160,7 +1164,7 @@ def test_auth_backend(c, backend): pdns_auth_env_vars += ' context=noipv6' with c.cd('regression-tests.nobackend'): c.run(f'{pdns_auth_env_vars} ./runtests') - c.run('/opt/pdns-auth/bin/pdnsutil test-algorithms') + c.run('/opt/pdns-auth/bin/pdns-auth-util test-algorithms') return @task