2020-05-04 13:15:43 +01:00
==============================
Libvirt Continuous Integration
==============================
.. contents ::
2020-07-02 15:02:38 +02:00
The libvirt project uses GitLab CI for automated testing.
2022-07-12 13:15:07 +02:00
`Here's <ci-dashboard.html> `__ our CI dashboard which shows the current status
of our pipelines.
2020-07-02 15:02:38 +02:00
2022-07-12 13:19:14 +02:00
Builds and unit tests
=====================
2020-07-02 15:02:38 +02:00
Linux builds and cross-compiled Windows builds happen on GitLab CI's shared
runners, while FreeBSD and macOS coverage is achieved by triggering `Cirrus CI
<https://cirrus-ci.com/> `_ jobs behind the scenes.
Most of the tooling used to build CI pipelines is maintained as part of the
`libvirt-ci <https://gitlab.com/libvirt/libvirt-ci> `_ subproject.
2020-05-04 13:15:43 +01:00
2022-07-12 13:19:14 +02:00
Integration tests
=================
2020-05-04 13:15:43 +01:00
2022-07-12 13:19:14 +02:00
Integration tests in our CI pipelines require dedicated HW which is not
available to forks, see `GitLab CI Custom Runners <ci-runners.html> `__ .
Therefore, in order to execute the integration tests as part of your libvirt
fork's GitLab CI you'll need to provide your own runner. You'll also need to
set a few CI variables to run the integration tests as part of the CI pipeline,
see below.
2020-05-04 13:15:43 +01:00
2022-07-12 13:19:14 +02:00
GitLab CI variables
-------------------
2020-05-04 13:15:43 +01:00
2022-07-12 13:19:14 +02:00
* `` LIBVIRT_CI_INTEGRATION `` - enables integration test runs manually or in forks
* `` LIBVIRT_CI_INTEGRATION_RUNNER_TAG `` - overrides the upstream runner tag on the
2020-05-04 13:15:43 +01:00
2022-07-12 13:19:14 +02:00
Retrieving test logs
--------------------
2020-05-04 13:15:43 +01:00
2022-07-12 13:19:14 +02:00
In case the integration test suite fails in our CI pipelines, a job artifact is
generated containing Avocado logs, libvirt debug logs, and the latest traceback
(if one was produced during a daemon's execution).
2022-07-12 13:44:26 +02:00
Adding new OS platforms OR build pre-requisites
===============================================
Since all of the Dockerfiles libvirt uses for CI have been generated by `` lcitool ``
provided by the `libvirt-ci <https://gitlab.com/libvirt/libvirt-ci.git> `__ project,
most relevant changes will need to be introduced to `` lcitool `` first. Please
follow the instructions outlined
`here <https://gitlab.com/libvirt/libvirt-ci/-/blob/master/docs/platforms_and_mappings.rst> `__