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
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 }}"
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
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 }}"
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 }}
- 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: |
- 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' }}
- 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
- 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' }}
- 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: |
- 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: |
- 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: |
- 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: |
- 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
- 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: |
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)
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
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')
@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':
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