1. 01 Jun, 2020 1 commit
    • Michał Kępień's avatar
      Add Danger Python to GitLab CI · 5190c428
      Michał Kępień authored
      Certain rules of the BIND development process are not codified anywhere
      and/or are used inconsistently.  In an attempt to improve this
      situation, add a GitLab CI job which uses Danger Python to add comments
      to merge requests when certain expectations are not met.  Two categories
      of feedback are used, only one of which - fail() - causes the GitLab CI
      job to fail.  Exclude dangerfile.py from Python QA checks as the way the
      contents of that file are evaluated triggers a lot of Flake8 and PyLint
      (cherry picked from commit 36bb45a8)
  2. 21 May, 2020 1 commit
    • Michał Kępień's avatar
      Do not install Python packages in GitLab CI jobs · 513378a1
      Michał Kępień authored
      As Python QA tools, BIND system test prerequisites, and documentation
      building utilities are now all included in operating system images used
      in GitLab CI, do not use pip for installing them in each CI job any
      (cherry picked from commit e3c21729)
  3. 19 May, 2020 1 commit
  4. 18 May, 2020 3 commits
    • Michał Kępień's avatar
      Work around cppcheck 2.0 uninitvar false positives · 41b4af5d
      Michał Kępień authored
      cppcheck 2.0 reports false positives about uninitialized variables in a
      lot of places throughout BIND source code, e.g.:
          bin/dig/host.c:386:24: error: Uninitialized variable: length [uninitvar]
           printf("%.*s", (int)r.length, (char *)r.base);
      Apparently cppcheck 2.0 has issues with processing (&var)->field syntax,
      which is what the macros from lib/isc/include/isc/buffer.h are evaluated
      to.  This issue was reported upstream [1] and will hopefully be
      addressed in a future cppcheck release.
      In the meantime, to avoid modifying BIND source code in multiple places
      just because of a static checker false positive, work around the issue
      by adding intermediate variables to buffer macro definitions using a sed
      invocation in the cppcheck job script.
      [1] https://sourceforge.net/p/cppcheck/discussion/general/thread/122153e3c1/
      (cherry picked from commit 481fa34e)
    • Michał Kępień's avatar
      Make GCC version extraction work with GCC 10 · b5608306
      Michał Kępień authored
      Add whitespace to the regular expression used for extracting the GCC
      version from "gcc --version" output so that it works properly with
      multi-digit major version numbers.
      (cherry picked from commit 3b48eec7)
    • Michał Kępień's avatar
      Ensure cppcheck creates a HTML report upon failure · 90a20ad8
      Michał Kępień authored
      Commit 00f12220 broke the cppcheck job
      in GitLab CI: when cppcheck fails, the script is immediately
      interrupted, preventing cppcheck-htmlreport from being run.  To ensure
      the HTML report is generated when cppcheck fails, revert to invoking
      cppcheck-htmlreport in the "after_script" part of the job.
      (cherry picked from commit cb2037ee)
  5. 15 May, 2020 1 commit
    • Michal Nowak's avatar
      Collect TXT and HTML reports produced by ABI checker · db09c630
      Michal Nowak authored
      Although in util/api-checker.sh we create textual reports, we don't
      preserve them in job artifacts, but we should.
      We don't want to keep all HTML pages present in the project root, but
      just those produced by ABI checker.
      (cherry picked from commit b5ccf95b)
  6. 11 May, 2020 1 commit
  7. 30 Apr, 2020 2 commits
  8. 29 Apr, 2020 2 commits
  9. 16 Apr, 2020 2 commits
  10. 15 Apr, 2020 2 commits
  11. 26 Mar, 2020 8 commits
    • Michał Kępień's avatar
      Remove unused YAML anchors · 9e716a0a
      Michał Kępień authored
      Some YAML anchors defined in .gitlab-ci.yml are not subsequently used.
      Remove them to prevent confusion.
      (cherry picked from commit 3d121ede)
    • Michał Kępień's avatar
      Do not install compiledb in cppcheck job · 7e45ec00
      Michał Kępień authored
      compiledb is already included in the Docker image used by the cppcheck
      job.  Do not attempt installing it again.
      (cherry picked from commit 3d264dbe)
    • Michał Kępień's avatar
      Include compiler name in all build/test job names · 13b942f6
      Michał Kępień authored
      Most build/test job names already contain a "clang", "gcc", or "msvc"
      prefix which indicates the compiler used for a given job.  Apply that
      naming convention to all build/test job names.
      (cherry picked from commit 0c898084)
    • Michał Kępień's avatar
      Refactor TSAN unit test job definitions · cb541ea2
      Michał Kępień authored
      Multiple YAML keys have identical values for both TSAN unit test job
      definitions.  Extract these common keys to a YAML anchor and use it in
      TSAN unit test job definitions to reduce code duplication.
      (cherry picked from commit 84463f33)
    • Michał Kępień's avatar
      Run "kyua report-html" for TSAN unit test jobs · ac439761
      Michał Kępień authored
      Definitions of jobs running unit tests under TSAN contain an
      "after_script" YAML key.  Since the "unit_test_job" anchor is included
      in those job definitions before "after_script" is defined, the
      job-specific value of that key overrides the one defined in the included
      anchor.  This prevents "kyua report-html" from being run for TSAN unit
      test jobs.  Moving the invocation of "kyua report-html" to the "script"
      key in the "unit_test_job" anchor is not acceptable as it would cause
      the exit code of that command to determine the result of all unit test
      jobs and we need that to be the exit code of "make unit".  Instead, add
      "kyua report-html" invocations to the "after_script" key of TSAN unit
      test job definitions to address the problem without affecting other job
      (cherry picked from commit 6ebce942)
    • Michał Kępień's avatar
      Refactor TSAN system test job definitions · a052bac3
      Michał Kępień authored
      Multiple YAML keys have identical values for both TSAN system test job
      definitions.  Extract these common keys to a YAML anchor and use it in
      TSAN system test job definitions to reduce code duplication.
      (cherry picked from commit a9aa295f)
    • Michał Kępień's avatar
      Drop "before_script" key from TSAN job definitions · 671e0e7a
      Michał Kępień authored
      Both "system_test_job" and "unit_test_job" YAML anchors contain a
      "before_script" key.  TSAN job definitions first specify their own value
      of the "before_script" key and then include the aforementioned YAML
      anchors, which results in the value of the "before_script" key being
      overridden with the value specified by the included anchor.  Given this,
      remove "before_script" definitions specific to TSAN jobs as they serve
      no practical purpose.
      (cherry picked from commit 8ef01c7b)
    • Michał Kępień's avatar
      Define TSAN options in a global variable · a9bc2311
      Michał Kępień authored
      All assignments for the TSAN_OPTIONS variable are identical across the
      entire .gitlab-ci.yml file.  Define a global TSAN_OPTIONS_COMMON
      variable and use it in job definitions to reduce code duplication.
      (cherry picked from commit 6325c099)
  12. 25 Mar, 2020 4 commits
  13. 24 Mar, 2020 1 commit
    • Ondřej Surý's avatar
      Remove Debian 8 ("Jessie") from the GitLab CI · e2d6d0ee
      Ondřej Surý authored
      There are several reason why remove Debian 8 from the CI:
      * Debian 8 ("jessie") has been superseded by Debian 9 ("stretch").
      * Regular security support updates have been discontinued as of
        June 17th, 2018.
      * Jessie LTS is supported from 17th June 2018 to June 30, 2020.
      In other words, it's no longer officially supported by Debian security
      team, but by the volunteer/paid contributor composed LTS team.  And the
      release will be discontinued in three months from now.  We can use the
      freed CI resources to bring new platforms or just to make the jobs run a
      bit faster.
      (cherry picked from commit 75f46cc3)
  14. 20 Mar, 2020 4 commits
    • Ondřej Surý's avatar
      Rename MAKE environment variable to MAKE_COMMAND · 10d671ae
      Ondřej Surý authored
      The environment variable MAKE has been replaced with MAKE_COMMAND,
      because overriding MAKE variable also changed the definition of the MAKE
      inside the Makefiles, and we want only a single wrapper around the whole
      build process.
      Previously, setting `MAKE` to `bear make` meant that `bear make` would
      be run at every nested make invocation, which messed up the upcoming
      automake transition as compile_commands.json would be generated in every
      subdirectory instead of just having one central file at the top of the
      build tree.
      (cherry picked from commit de1a637a)
    • Ondřej Surý's avatar
      Replace dependencies+needs with needs+artifacts in GitLabCI config · 8fa8ed29
      Ondřej Surý authored
      All jobs now use solely the newer needs configuration to declare
      dependencies between jobs:
            - job: <foo>
              artifacts: true
      instead of combination of dependencies and needs which is deprecated.
      This change completely unbundles the stages (alas the stages still needs
      to stay because the job graph has to stay acyclic between the stages).
      (cherry picked from commit 66ba808c)
    • Michal Nowak's avatar
      Bump BIND baseline version for abi-check · ba6ed675
      Michal Nowak authored
      (cherry picked from commit 3730d59b)
    • Michal Nowak's avatar
      Enhance unit test debugging · 0603dc86
      Michal Nowak authored
      When unit test fails, core file is created. Kyua's 'debug' command can
      run GDB on it and provide backtrace. Unfortunately Kyua is picky about
      location of these core files we opt to use custom Kyua fork and copy
      core files from Kyua working directory to source tree and make it
      available in GitLab.
      (cherry picked from commit 94fa27e4)
  15. 16 Mar, 2020 2 commits
  16. 10 Mar, 2020 1 commit
    • Michal Nowak's avatar
      Add API Checker · 14cf92de
      Michal Nowak authored
      ABI checker tools generate HTML and TXT API compatibility reports of
      BIND libraries. Comparison is being done between two bind source trees
      which hold built BIND.
      In the CI one version is the reference version defined by
      BIND_BASELINE_VERSION variable, the latter one is the HEAD of branch
      under test.
      (cherry picked from commit 49bc08e6)
  17. 09 Mar, 2020 1 commit
    • Michał Kępień's avatar
      Do not run OpenBSD system test jobs for tags · d4c91308
      Michał Kępień authored
      OpenBSD virtual machines seem to affected particularly badly by other
      activity happening on the host.  This causes trouble around release
      time: when multiple tags are pushed to the repository, a large number of
      jobs is started concurrently on all CI runners.  In extreme cases, this
      causes the system test suite to run for about an hour (!) on OpenBSD
      VMs, with multiple tests failing.  We investigated the test artifacts
      for all such cases in the past and the outcome was always the same: test
      failures were caused by extremely slow I/O on the guest.  We tried
      various tricks to work around this problem, but nothing helped.
      Given the above, stop running OpenBSD system test jobs for pending BIND
      releases to prevent the results of these jobs from affecting the
      assessment of a given release's readiness for publication.  This change
      does not affect OpenBSD build jobs.  OpenBSD system test jobs will still
      be run for scheduled and web-requested pipelines, to make sure we catch
      any severe issues with test code on that platform sooner or later.
      (cherry picked from commit 7b002cea)
  18. 06 Mar, 2020 1 commit
  19. 05 Mar, 2020 2 commits
    • Michal Nowak's avatar
      Add respdiff job · 45d59c50
      Michal Nowak authored
      This job leverages respdiff test from the private bind-qa repo.
      (cherry picked from commit 04f8b65a)
    • Michal Nowak's avatar
      Fix "pkcs11" system test · 5cb50baf
      Michal Nowak authored
        - Define the SLOT environment variable before starting the test.  This
          variable defaults to 0 and that does not work with SoftHSM 2.
        - The system test expects the PIN environment variable to be set to
          "1234" while bin/tests/prepare-softhsm2.sh sets it to "0000".
          Update bin/tests/prepare-softhsm2.sh so that it sets the PIN to
        - Move contents of bin/tests/system/pkcs11/prereq.sh to
          bin/tests/system/pkcs11/setup.sh as the former was creating a file
          called "supported" that was getting removed by the latter before
          bin/tests/system/pkcs11/tests.sh could access it.
        - Fix typo in "have_ecx".
      (cherry picked from commit 100a230e)