============================== Libvirt Continuous Integration ============================== .. contents:: The libvirt project uses GitLab CI for automated testing. `Here's `__ our CI dashboard which shows the current status of our pipelines. Builds and unit tests ===================== 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 `_ jobs behind the scenes. Most of the tooling used to build CI pipelines is maintained as part of the `libvirt-ci `_ subproject. Integration tests ================= Integration tests in our CI pipelines require dedicated HW which is not available to forks, see `GitLab CI Custom Runners `__. 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. GitLab CI variables ------------------- * ``LIBVIRT_CI_INTEGRATION`` - enables integration test runs manually or in forks * ``LIBVIRT_CI_INTEGRATION_RUNNER_TAG`` - overrides the upstream runner tag on the Retrieving test logs -------------------- 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). 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 `__ project, most relevant changes will need to be introduced to ``lcitool`` first. Please follow the instructions outlined `here `__ Running CI workloads locally ============================ If you're interested in running the CI test workloads locally, please read our `testing `__ guide.