Changes

Jump to navigation Jump to search
1,801 bytes added ,  08:03, 16 February 2018
no edit summary
Line 4: Line 4:  
[https://travis-ci.org Travis CI] is a free public service, it is well integrated with github.
 
[https://travis-ci.org Travis CI] is a free public service, it is well integrated with github.
   −
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 check compilation on all supported platforms (x86_64, arm, aarch64, and power), and execute all tests that can work  on the kernel available. See <code>.travis.yml</code>, <code>scripts/travis/</code> and <code>scripts/build/</code> in CRIU sources for details.
+
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.
   −
Building CRIU for other platforms on x86_64 is a bit tricky. We use [[Docker build|Docker]] to get a container for a target platform, and qemu-static to run this container. qemu-static doesn't exist in all distributions, so [https://github.com/xemul/criu/blob/master/scripts/build/extract-deb-pkg a script] downloads it from Debian and extracts binaries.
+
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]
   −
=== Enabling for your repo ===
+
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).
 
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).
Line 22: Line 50:  
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.
 
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:
+
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
 
* dump/restore a few times
 
* dump/restore a few times
Line 49: Line 77:  
* Virtual machine (PPC64el)
 
* Virtual machine (PPC64el)
    +
== See also ==
 +
 +
* [[How to submit patches]]
 +
* [[ZDTM test suite]]
 +
* [[Linux-next]]
 +
* [[Patchwork]]
   −
== Links ==
+
== External links ==
 
* [https://travis-ci.org/xemul/criu Travis]
 
* [https://travis-ci.org/xemul/criu Travis]
 
* [https://ci.openvz.org/view/CRIU/ Mr Jenkins]
 
* [https://ci.openvz.org/view/CRIU/ Mr Jenkins]
 +
* [https://coveralls.io/github/xemul/criu Coveralls]
    
[[Category: Development]]
 
[[Category: Development]]
 +
[[Category: Infrastructure]]

Navigation menu