2
0
mirror of https://github.com/checkpoint-restore/criu synced 2025-08-31 14:25:49 +00:00

ci: move vagrant test to cirrus ci

With Travis dramatically reducing the minutes available for CI, CRIU
needs a new place to run tests. This moves the Vagrant based Fedora 32
no VDSO test cases to Cirrus CI. Cirrus CI seems to be one of the very
few free CI services allowing access to /dev/kvm.

Signed-off-by: Adrian Reber <areber@redhat.com>
This commit is contained in:
Adrian Reber
2020-11-05 06:47:52 +00:00
committed by Andrei Vagin
parent f04e8517ca
commit 50a96e9faf
3 changed files with 50 additions and 10 deletions

16
.cirrus.yml Normal file
View File

@@ -0,0 +1,16 @@
environment:
CIRRUS_WORKING_DIR: "/tmp/criu"
container:
# This test case does not work on focal, because the newer version
# of libvirt fails during 'vagrant up' with ip6tables errors.
image: ubuntu:bionic
kvm: true
cpu: 4
memory: 8G
task:
name: Vagrant Fedora based test (no VDSO)
setup_script: |
scripts/ci/apt-install make gcc pkg-config git perl-modules iproute2 kmod wget
ln -sf /usr/include/google/protobuf/descriptor.proto images/google/protobuf/descriptor.proto
build_script: |
make -C scripts/ci vagrant-fedora-no-vdso

View File

@@ -7,7 +7,6 @@ services:
env:
- TR_ARCH=local COMPAT_TEST=y
- TR_ARCH=local CLANG=1 COMPAT_TEST=y
- TR_ARCH=vagrant-fedora-no-vdso
jobs:
include:
- os: linux

View File

@@ -6,29 +6,55 @@
set -e
set -x
VAGRANT_VERSION=2.2.7
VAGRANT_VERSION=2.2.10
FEDORA_VERSION=32
FEDORA_BOX_VERSION=32.20200422.0
setup() {
apt-get -qq update
# Load the kvm modules for vagrant to use qemu
modprobe kvm kvm_intel
if [ -n "$TRAVIS" ]; then
# Load the kvm modules for vagrant to use qemu
modprobe kvm kvm_intel
fi
if [ -n "$CIRRUS_CI" ]; then
# Running modprobe is not possible on Cirrus, because
# we are running in a container with potentially other
# modules than the host.
# Vagrant can still use /dev/kvm later if we do
chmod 666 /dev/kvm
fi
# Tar up the git checkout to have vagrant rsync it to the VM
tar cf criu.tar ../../../criu
wget https://releases.hashicorp.com/vagrant/${VAGRANT_VERSION}/vagrant_${VAGRANT_VERSION}_"$(uname -m)".deb -O /tmp/vagrant.deb && \
# Cirrus has problems with the following certificate.
wget --no-check-certificate https://releases.hashicorp.com/vagrant/${VAGRANT_VERSION}/vagrant_${VAGRANT_VERSION}_"$(uname -m)".deb -O /tmp/vagrant.deb && \
dpkg -i /tmp/vagrant.deb
./apt-install libvirt-bin libvirt-dev qemu-utils qemu
systemctl restart libvirt-bin
./apt-install libvirt-clients libvirt-daemon-system libvirt-dev qemu-utils qemu \
ruby build-essential libxml2-dev qemu-kvm rsync ebtables dnsmasq-base \
openssh-client
if [ -n "$CIRRUS_CI" ]; then
# On Cirrus systemctl does not work, because we are running in
# a container without access to systemd
/usr/sbin/virtlogd -d
/usr/sbin/libvirtd -d
else
systemctl restart libvirtd
fi
vagrant plugin install vagrant-libvirt
vagrant init fedora/${FEDORA_VERSION}-cloud-base --box-version ${FEDORA_BOX_VERSION}
# The default libvirt Vagrant VM uses 512MB.
# Travis VMs should have around 7.5GB.
# Increasing it to 4GB should work.
sed -i Vagrantfile -e 's,^end$, config.vm.provider :libvirt do |libvirt|'"\n"' libvirt.memory = 4096;end'"\n"'end,g'
vagrant up --provider=libvirt
if [ -n "$CIRRUS_CI" ]; then
# Work around for:
# Error while activating network: Call to virNetworkCreate failed: internal error:
# Failed to apply firewall rules /usr/sbin/ip6tables --table filter --list-rules: modprobe: FATAL: Module ip6_tables not found in directory /lib/modules/5.4.0-1025-gcp
# On cirrus-ci.com. Running in a container without access to the host's kernel modules
rm -f /sbin/ip6tables
cp /bin/true /sbin/ip6tables
fi
vagrant up --provider=libvirt > /dev/null
mkdir -p /root/.ssh
vagrant ssh-config >> /root/.ssh/config
ssh default sudo dnf install -y gcc git gnutls-devel nftables-devel libaio-devel \
@@ -45,7 +71,6 @@ fedora-no-vdso() {
vagrant reload
ssh default cat /proc/cmdline
ssh default 'cd /vagrant; tar xf criu.tar; cd criu; make -j 4'
# Excluding two cgroup tests which seem to fail because of cgroup2
ssh default 'cd /vagrant/criu/test; sudo ./zdtm.py run -a --keep-going'
}