Line 1: |
Line 1: |
| + | This page describes various system performing automatic build verification for CRIU. |
| + | |
| == Travis CI == | | == Travis CI == |
− | It's a public service, which is integrated with github. It's highly recommended to enable it for your criu repo on github and check changes before sending them to the mail list.
| + | [https://travis-ci.org Travis CI] is a free public service, it is well integrated with github. |
− | Travis allows to check compilation on x86_64, arm, aarch64 and execute a part of tests. | + | |
| + | To test CRIU with Travis CI, the Ubuntu 14.04 "trusty" VM is used, which has root access and an ability to run Docker containers.details. |
| + | |
| + | With Travis CI, we do the following tests: |
| + | * check compilation on all supported platforms (x86_64, arm, aarch64, and power) |
| + | * do the same with <code>CC=clang</code> instead of gcc |
| + | * check compilation on Alpine Linux (x86_64 only) |
| + | * execute all tests that can work on the kernel available ([[ZDTM test suite]] and some other tests). |
| + | * collect code coverage and upload it to [https://coveralls.io/github/xemul/criu Coveralls] |
| + | |
| + | For implementation details, see <code>.travis.yml</code>, <code>scripts/travis/</code> and <code>scripts/build/</code> in CRIU sources for details. |
| + | |
| + | === Patchwork === |
| + | [https://patchwork.criu.org/project/criu Patchwork] is a web patch tracking system for projects using a mailing list for contributions and reviews. |
| + | |
| + | In CRIU it is used to grab patch series from the CRIU mailing list, create a new git branch which is tested by Travis, and report success/failure back to the mailing list. |
| + | |
| + | '''For more info, see [[Patchwork]]'''. |
| + | |
| + | === Non-x86 architectures === |
| + | |
| + | Travis CI only provides x86_64, so using other platforms is a bit tricky. We use [[Docker build|Docker]] to get a container for a target platform, and a static build of qemu-user-$ARCH to run this container. As qemu-user-static is not available for Ubuntu 14.04, [https://github.com/xemul/criu/blob/master/scripts/build/extract-deb-pkg a script] downloads it from Debian and extracts binaries. |
| + | |
| + | Unfortunately, qemu-user functionality is limited (for example, <code>strace</code> syscall is not implemented), so we can't run any tests on these architectures. |
| + | |
| + | === Kernel testing === |
| + | |
| + | In addition to testing CRIU, we use Travis CI to test a few branches of the Linux kernel, to make sure recent changes does not break our precious software. We report found bugs to the kernel, and maintain a list of those bugs at [[Linux-next]]. |
| + | |
| + | The process consists of "git clone" the kernel, compiling it, and using kexec to reboot to a new kernel. The catch is we have to use CRIU itself to checkpoint/restore the travis control process, so that the VM is not lost to Travis upon reboot. Please see [https://avagin.github.io/travis-kexec-criu this article] for more details on the process. |
| + | |
| + | To check the recent builds, see https://travis-ci.org/avagin/linux/builds . |
| + | |
| + | === Enable Travis CI for your repo === |
| + | |
| + | You can test your own criu repo with Travis (and it's highly recommended to check your changes before sending patches to the mailing list). |
| + | |
| + | The setup is really easy, all you need to do is: |
| + | |
| + | * [https://travis-ci.org/auth Sign in] to Travis CI, using your github account. |
| + | * Wait till Travis CI synchronizes your github repositories. |
| + | * Check your [https://travis-ci.org/profile profile page] and enable Travis CI for your CRIU repo. |
| + | * Create a new branch or push a new commit to github to trigger a build. |
| | | |
| == Mr Jenkins == | | == Mr Jenkins == |
− | We use Jenkins to execute tests. It works only for the criu upstream repo and isn't available to users. | + | We use Jenkins to execute tests. It works only for the criu upstream repo and isn't available to users yet. If you visit [https://ci.openvz.org/view/CRIU/], you will find more than dozen jobs for different configurations. We try to test all criu features. |
| + | |
| + | Most part of jobs uses [[ZDTM test suite]]. There each test is a small program. Each job plays different scenarios with these tests: |
| + | * dump/restore |
| + | * dump/restore a few times |
| + | * dump/restore with a freezer cgroup |
| + | * dump only |
| + | * pre-dump, dump/restore with or without page-server |
| + | * pre-dump with duplication |
| + | * [[fault injection]] |
| + | * collect code coverage |
| + | |
| + | In addition, we execute our tests on linux-next to be sure that nobody breaks us in a kernel space. |
| + | |
| + | [https://ci.openvz.org/job/CRIU/ https://ci.openvz.org/job/CRIU/job/CRIU-x86_64/branch/criu-dev/badge/icon?believeme=.png] |
| + | [https://ci.openvz.org/computer/CRIU-linux-next https://ci.openvz.org/job/CRIU-linux-next/badge/icon?believeme=.png] |
| + | |
| + | == Targets == |
| + | |
| + | CRIU project supports different hardware architectures and we test all of supported archs. This chapter describes targets used for CRIU testing. |
| + | |
| + | * Virtuozzo virtual machine (x86_64, Fedora?) |
| + | |
| + | * [http://www.fit-pc.com/web/products/fitlet/ Fitlet] (x86_64, Fedora 23) |
| + | |
| + | * Raspberry Pi Model B Rev 2 (ARM, Raspbian) |
| + | |
| + | * Virtual machine (PPC64el) |
| + | |
| + | == See also == |
| + | |
| + | * [[How to submit patches]] |
| + | * [[ZDTM test suite]] |
| + | * [[Linux-next]] |
| + | * [[Patchwork]] |
| | | |
− | == Links == | + | == External links == |
− | * [[https://ci.openvz.org]] | + | * [https://travis-ci.org/xemul/criu Travis] |
− | * [[https://travis-ci.org/xemul/criu]] | + | * [https://ci.openvz.org/view/CRIU/ Mr Jenkins] |
| + | * [https://coveralls.io/github/xemul/criu Coveralls] |
| | | |
| [[Category: Development]] | | [[Category: Development]] |
| + | [[Category: Infrastructure]] |