| .. _ci: |
| |
| Continuous Integration (CI) |
| =========================== |
| |
| Continuous integration (CI) requires the builds of the entire application and |
| the execution of a comprehensive set of automated tests every time there is a |
| need to commit any set of changes [1]_. The automated tests are composed |
| of unit, functional and other tests. |
| |
| Most of QEMU's CI is run on GitLab's infrastructure although a number |
| of other CI services are used for specialised purposes. The most up to |
| date information about them and their status can be found on the |
| `project wiki testing page <https://wiki.qemu.org/Testing/CI>`_. |
| |
| These tests are also used as gating tests before merging pull requests. |
| A gating test restricts the move of code from one stage to another on a |
| test/deployment pipeline. The step move is granted with approval. The approval |
| can be a manual intervention or a set of tests succeeding [2]_. |
| |
| On QEMU, the gating process happens during the pull request. The approval is |
| done by the project leader running its own set of tests. The pull request gets |
| merged when the tests succeed. |
| |
| .. include:: ci-jobs.rst.inc |
| .. include:: ci-runners.rst.inc |
| |
| References |
| ---------- |
| |
| .. [1] Humble, Jez & Farley, David (2010). Continuous Delivery: |
| Reliable Software Releases Through Build, Test, and Deployment, p. 55. |
| .. [2] Humble, Jez & Farley, David (2010). Continuous Delivery: |
| Reliable Software Releases Through Build, Test, and Deployment, p. 122. |