This folder contains implementation and configuration files for our CI infrastructure on top of Github Actions. Aside from CI, it also contains packaging and automated release scripts.
The files in this folder correspond to:
build-and-test-Xen.yaml
-> Build Xen using CBMC tools.csmith.yaml
-> Run 10 randomly generated CSmith tests per Pull Request.doxygen-check.yaml
-> Build project doxygen documentation per Pull Request.pull-request-check-cpplint.sh
-> Script that's called per Pull Request to executecpplint
over changes.pull-request-check-clang-format.sh
-> Script that's called per Pull Request to executeclang-format
over changes.pull-request-checks.yaml
-> Configuration file for the Github Actions CI jobs for the various platforms.regular-release.yaml
-> Configuration file for performing an automated release every time a tag of a specific form (cbmc-x.y.z
) is pushed.release-packages.yaml
-> Configuration file for performing building of build artifacts that are attached to release when it's being made. Invoked when a regular release is performed.
We are currently building and testing CBMC under the following configurations:
make
*gcc
*linux
(ubuntu 20.04)make
*clang
*linux
(ubuntu 20.04)cmake
*gcc
*linux
(ubuntu 20.04)make
*clang
*macos
(10.15)cmake
*clang
*macos
(10.15)cmake
*vs
*windows
(vs2019)
Aside from the main platform builds for testing, we are also performing some auxiliary builds that test packaging support to be up-to-date. We do that for:
- a
docker
image - an
ubuntu-20.04
package - a
windows-msi
installer package
Last but not least, we are also performing a coverage statistics collection job, which builds CBMC with coverage information on, and then runs the tests, finally uploading the results to Codecov which then updates pull request with coverage statistics after the job has finished running.