zeek/ci
Tim Wojtulewicz 82978a8860 Merge remote-tracking branch 'origin/topic/jsiwek/fuzzing'
* origin/topic/jsiwek/fuzzing:
  Use zeek::detail namespace for fuzzer utils
  Set terminating flag during fuzzer cleanup
  Add missing include to standalone fuzzer driver
  Improve standalone fuzzer driver error messages
  Test fuzzers against seed corpus under CI ASan build
  Update fuzzing README with OSS-Fuzz integration notes
  Link fuzzers against shared library to reduce executable sizes
  Improve FuzzBuffer chunking
  Fix compiler warning in standalone fuzzer driver
  Adjust minor fuzzing documentation
  Exit immediately after running unit tests
  Add OSS-Fuzz Zeek script search path to fuzzers
  Assume libFuzzer when LIB_FUZZING_ENGINE file doesn't exist
  Change handling of LIB_FUZZING_ENGINE
  Change --enable-fuzzing to --enable-fuzzers
  Add standalone driver for fuzz targets
  Add basic structure for fuzzing targets
2020-05-12 18:53:06 -07:00
..
centos-7 Add Cirrus CI config 2019-12-17 15:28:25 -08:00
debian-9 Add Cirrus CI config 2019-12-17 15:28:25 -08:00
debian-9-32bit Add a 32-bit task to Cirrus CI config 2020-02-14 21:40:36 -08:00
fedora-30 Add Cirrus CI config 2019-12-17 15:28:25 -08:00
freebsd Fix Cirrus CI FreeBSD python dependencies installation 2020-01-06 10:51:17 -08:00
macos Add Cirrus CI config 2019-12-17 15:28:25 -08:00
ubuntu-16.04 Add Cirrus CI config 2019-12-17 15:28:25 -08:00
ubuntu-18.04 Merge remote-tracking branch 'origin/topic/jsiwek/fuzzing' 2020-05-12 18:53:06 -07:00
build.sh Add Cirrus CI config 2019-12-17 15:28:25 -08:00
init-external-repos.sh Fix CI to checkout right commit of zeek-testing-private 2020-02-21 22:57:53 -08:00
README Update a URL in CI README 2020-02-21 21:24:31 -08:00
test-fuzzers.sh Test fuzzers against seed corpus under CI ASan build 2020-04-28 16:17:39 -07:00
test.sh Use 2 btest retries for CI 2020-02-06 17:47:38 -08:00

=========================================
Continuous Integration Configuration Info
=========================================

The following pointers are aimed at maintainers to help describe a few points
about the Cirrus CI setup that may not be obvious/intuitive.

Private Test Suite
------------------

Access to the private test suite is available in CI tasks except in Pull
Requests from people that do not otherwise have write access to the zeek
repository on GitHub.  To configure this access for the
``zeek-testing-private`` repository, it uses a "deploy key" which is a single
purpose SSH key with read-only permissions.  Here's how it can be set up:

1. ``ssh-keygen -f cirrus-key``

2. Add contents of ``cirrus-key.pub`` as a new key on GitHub:
   https://github.com/zeek/zeek-testing-private/settings/keys

3. Generate a new Cirrus CI secured variable in the repository settings at
   https://cirrus-ci.com/github/zeek/zeek.  The value of the secured variable
   is the base64-encoded private key, and can be obtained from the output of
   the command: ``base64 cirrus-key``.

4. Take the ``ENCRYPTED[...]``` string generated by Cirrus and use that as the
   value of ``ZEEK_TESTING_PRIVATE_SSH_KEY`` in ``.cirrus.yml``

5. Delete the local key: ``rm cirrus-key*``

6. Commit/push the changes.

Email Notifications
-------------------

Cirrus CI doesn't feature any way to perform email notifications on failures,
so that is instead handled by a separate GitHub Action:

  https://github.com/zeek/ci-email-action

The configuration of that GitHub Action is typical: it's just the
``.github/workflows/ci-notification.yml`` file, which set SMTP/mail info
via secrets stored in GitHub for the Zeek repository:

  https://github.com/zeek/zeek/settings/secrets

The particular values used for those are currently from the Zeek project's AWS
Simple Email Service configuration.