| Serge Bazanski | 5aa494f | 2021-05-18 18:57:10 +0200 | [diff] [blame] | 1 | Monogon CI |
| 2 | ========== |
| 3 | |
| 4 | Monogon has a work-in-progress continuous integration / testing pipeline. |
| 5 | Because of historical reasons, some parts of this pipeline are defined in a |
| Leopold | 7fbf104 | 2023-01-06 19:57:37 +0100 | [diff] [blame] | 6 | separate non-public repository that is managed by Monogon SE. |
| Serge Bazanski | 5aa494f | 2021-05-18 18:57:10 +0200 | [diff] [blame] | 7 | |
| 8 | In the long term, the entire infrastructure code relating to this will become |
| 9 | public and part of the Monogon repository. In the meantime, this document |
| 10 | should serve as a public reference that explains how that part works and how it |
| 11 | integrates with `//build/ci/...` and the project as a whole. |
| 12 | |
| Serge Bazanski | 5aa494f | 2021-05-18 18:57:10 +0200 | [diff] [blame] | 13 | CI usage |
| 14 | -------- |
| 15 | |
| 16 | When a change on https://review.monogon.dev/ gets opened, it needs to either |
| 17 | be owned by a 'trusted user', or be vouched by one. This is because our current |
| 18 | CI setup is not designed to protect against malicious changes that might |
| 19 | attempt to take over the CI system, or change the CI scripts themselves to skip |
| 20 | tests. |
| 21 | |
| Leopold | 7fbf104 | 2023-01-06 19:57:37 +0100 | [diff] [blame] | 22 | Currently, all Monogon SE employees (thus, the core Monogon development team) |
| Serge Bazanski | 5aa494f | 2021-05-18 18:57:10 +0200 | [diff] [blame] | 23 | are marked as 'trusted users'. There is no formal process for community |
| 24 | contributors to become part of this group, but we are more than happy to |
| 25 | formalize such a process when needed, or appoint active community contributors |
| 26 | to this group. Ideally, though, the CI system should be rebuilt to allow any |
| 27 | external contributor to run CI in a secure and sandboxed fashion. |
| 28 | |
| 29 | CI implementation |
| 30 | ----------------- |
| 31 | |
| 32 | The CI system is currently made of a Jenkins instance running on |
| 33 | https://jenkins.monogon.dev/. It runs against open changes that have the |
| 34 | Allow-Run-CI label evaluated to 'ok' Gerrit Prolog rules, and executes the |
| 35 | `//build/ci/jenkins-presubmit.groovy` script on them. |
| 36 | |
| 37 | Currently, the Jenkins instance is not publicly available, and thus CI logs are |
| Leopold | 7fbf104 | 2023-01-06 19:57:37 +0100 | [diff] [blame] | 38 | not publicly available either. This will be fixed soon. |