zeek/ci
Christian Kreibich b66e607e5f Don't initialize private testsuite in CI when not running out of Zeek project
The initialization of the private testsuite currently fails builds run in
forks. Cirrus's encrypted variables won't work outsize of the Zeek project, so
skip that setting altogether.
2021-10-05 12:37:02 -07:00
..
alpine Add ssh to Alpine Dockerfile for retrieving external test repos 2021-03-31 11:59:04 -07:00
centos-7 Update CentOS CI Dockerfiles to fix git/diff dependencies 2020-11-25 15:19:56 -08:00
centos-8 Fix package name for CMake on CentOS 8 2021-06-29 13:42:14 +02:00
centos-stream-8 Add CentOS Stream 8 to CI 2021-02-24 09:50:36 -08:00
debian-9 CI tweak: add a datestamp to Debian 9 Dockerfiles to invalidate Cirrus build cache 2021-10-01 11:56:24 -07:00
debian-9-32bit CI tweak: add a datestamp to Debian 9 Dockerfiles to invalidate Cirrus build cache 2021-10-01 11:56:24 -07:00
debian-10 Update CI scripts to remove python vs python3 workarounds 2020-11-25 14:57:09 -08:00
debian-11 CI support refresh 2021-08-26 13:32:02 -07:00
fedora-33 Minor Fedora 32/33 updates in CI 2021-02-24 09:51:19 -08:00
fedora-34 Add Fedora 34 to CI 2021-06-02 09:46:27 -07:00
freebsd CI tweak: upgrade curl on FreeBSD to avoid cert expiration 2021-10-01 11:56:27 -07:00
macos Fixing homebrew, again. 2021-09-25 11:45:22 -07:00
opensuse-leap-15.2 CI: Add OpenSUSE Leap 15.2 2021-03-31 16:00:33 +01:00
opensuse-leap-15.3 Add OpenSUSE Leap 15.3 to testing 2021-06-08 10:47:11 +01:00
ubuntu-18.04 Update CI scripts to remove python vs python3 workarounds 2020-11-25 14:57:09 -08:00
ubuntu-20.04 Update CI scripts to remove python vs python3 workarounds 2020-11-25 14:57:09 -08:00
benchmark.sh Include git sha in request to benchmark host 2021-03-25 17:38:02 -07:00
build.sh Use Cirrus's new greedy mode for parallelizing builds and tests 2021-07-19 13:44:16 -07:00
common.sh Use Cirrus's new greedy mode for parallelizing builds and tests 2021-07-19 13:44:16 -07:00
init-external-repos.sh Don't initialize private testsuite in CI when not running out of Zeek project 2021-10-05 12:37:02 -07:00
README Update docs for configuring CI email notifications 2020-08-19 11:51:27 -07:00
run-clang-format.sh GH-386: Add clang-format config and scripts 2021-09-16 15:35:11 -07:00
test-fuzzers.sh Test fuzzers against seed corpus under CI ASan build 2020-04-28 16:17:39 -07:00
test.sh Disable script profiling/coverage on sanitizer builds 2021-09-21 09:43:08 -07:00
update-zeekygen-docs.sh Change update-zeekygen-docs.sh to set release branch in Sphinx config 2021-02-26 15:10:53 -08:00
upload-coverage.sh Prevent non-master builds, add cirrus information to upload 2020-10-22 00:56:20 +00: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 Orgnaization-Level Secured Variable in Cirrus CI settings at
   https://cirrus-ci.com/settings/github/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 the
``.github/workflows/ci-notification.yml`` file, which sets SMTP/mail info
via secrets stored in GitHub for the Zeek organization:

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

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