Skip to content

Commit

Permalink
scripts/ci: add configuration for a Vagrant virtual machine
Browse files Browse the repository at this point in the history
Using Vagrant makes reproducing and debugging CI issues easier: after
"vagrant up", a test virtual machine is up and running, and ready to run
"fedora-test-runner.sh". In order to make using this VM even easier, a
helper script, "run-selinux-test.sh" is created inside and instructions
on how to use it are documented at the beginning of Vagrantfile.

Signed-off-by: Nicolas Iooss <nicolas.iooss@m4x.org>
  • Loading branch information
fishilico authored and bachradsusi committed Dec 8, 2020
1 parent f5f6303 commit ce64c47
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 0 deletions.
1 change: 1 addition & 0 deletions scripts/ci/.gitignore
@@ -0,0 +1 @@
.vagrant/
48 changes: 48 additions & 0 deletions scripts/ci/Vagrantfile
@@ -0,0 +1,48 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrant configuration file which creates a virtual machine that can run the
# test suite using fedora-test-runner.sh, in an environment similar to the one
# used for automated continuous integration tests (Travis-CI)
#
# To create a new virtual machine:
#
# vagrant up --provision
#
# To launch tests (for example after modifications to libsepol, libselinux... are made):
#
# vagrant rsync && echo ./run-selinux-test.sh | vagrant ssh
#
# To destroy the virtual machine (for example to start again from a clean environment):
#
# vagrant destroy

# Create a helper script in the VM to run the testsuite as root from a clean environment
$script = <<SCRIPT
cat > /home/vagrant/run-selinux-test.sh << EOF
#/bin/sh
set -e -v
# Run the tests
sudo /root/selinux/scripts/ci/fedora-test-runner.sh
echo 'All tests passed :)'
EOF
chmod +x /home/vagrant/run-selinux-test.sh
SCRIPT

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
config.vm.box = "fedora/33-cloud-base"
config.vm.synced_folder "../..", "/root/selinux"

config.vm.provider "virtualbox" do |v|
v.memory = 4096
end
config.vm.provider "libvirt" do |v|
v.memory = 4096
end

config.vm.provision :shell, inline: $script
end
2 changes: 2 additions & 0 deletions scripts/ci/fedora-test-runner.sh
Expand Up @@ -75,6 +75,7 @@ git log --oneline -1
#
# Build and replace userspace components
#
make clean distclean
make -j"$(nproc)" LIBDIR=/usr/lib64 SHLIBDIR=/lib64 install
make -j"$(nproc)" LIBDIR=/usr/lib64 SHLIBDIR=/lib64 install-pywrap
make -j"$(nproc)" LIBDIR=/usr/lib64 SHLIBDIR=/lib64 relabel
Expand All @@ -84,6 +85,7 @@ make -j"$(nproc)" LIBDIR=/usr/lib64 SHLIBDIR=/lib64 relabel
# first.
#
cd "$HOME"
rm -rf selinux-testsuite
git clone --depth=1 https://github.com/SELinuxProject/selinux-testsuite.git
cd selinux-testsuite

Expand Down

0 comments on commit ce64c47

Please sign in to comment.