podman/contrib/cirrus/integration_test.sh
Chris Evich 599714d9f2
Cirrus: Support special-case modes of testing
Previously libpod CI was fairly straight-forward, run unit and
integration tests in a standard set of 3 VMs.  Off on the side was a
single special case of running tests as an ordinary user.  There is a
desire to stop using the PAPR system to support testing inside of a
container.

Since having two special cases potentially invites more
down the road, make provisions to handle them more gracefully.  This
commit introduces an environment variable:  ``$SPECIALMODE``.  It's
value has the following meanings within the CI scripts:

Mode 'none': Nothing special, business as usual (default)
Mode 'rootless': Rootless testing
Mode 'in_podman': Build container, run integration tests in it.

This will make adding additional special-cases later easier, as well as
extending the special cases in a Matrix across multiple OS's.

Signed-off-by: Chris Evich <cevich@redhat.com>
2019-04-03 09:57:20 -04:00

69 lines
1.7 KiB
Bash
Executable file

#!/bin/bash
set -e
source $(dirname $0)/lib.sh
req_env_var "
GOSRC $GOSRC
SCRIPT_BASE $SCRIPT_BASE
OS_RELEASE_ID $OS_RELEASE_ID
OS_RELEASE_VER $OS_RELEASE_VER
CONTAINER_RUNTIME $CONTAINER_RUNTIME
"
exit_handler() {
set +ex
record_timestamp "integration test end"
}
trap exit_handler EXIT
record_timestamp "integration test start"
cd "$GOSRC"
if [[ "$SPECIALMODE" == "in_podman" ]]
then
set -x
${CONTAINER_RUNTIME} run --rm --privileged --net=host \
-v $GOSRC:$GOSRC:Z \
--workdir $GOSRC \
-e "CGROUP_MANAGER=cgroupfs" \
-e "STORAGE_OPTIONS=--storage-driver=vfs" \
-e "CRIO_ROOT=$GOSRC" \
-e "PODMAN_BINARY=/usr/bin/podman" \
-e "CONMON_BINARY=/usr/libexec/podman/conmon" \
-e "DIST=$OS_RELEASE_ID" \
-e "CONTAINER_RUNTIME=$CONTAINER_RUNTIME" \
${OS_RELEASE_ID}podmanbuild bash $GOSRC/$SCRIPT_BASE/container_test.sh -b -i -t
exit $?
elif [[ "$SPECIALMODE" == "rootless" ]]
then
req_env_var "ROOTLESS_USER $ROOTLESS_USER"
set -x
ssh $ROOTLESS_USER@localhost \
-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o CheckHostIP=no \
$GOSRC/$SCRIPT_BASE/rootless_test.sh
exit $?
else
set -x
make
make install PREFIX=/usr ETCDIR=/etc
make test-binaries
clean_env
case "${OS_RELEASE_ID}-${OS_RELEASE_VER}" in
ubuntu-18) ;;
fedora-29) ;& # Continue to the next item
fedora-28) ;&
centos-7) ;&
rhel-7)
make podman-remote
install bin/podman-remote /usr/bin
;;
*) bad_os_id_ver ;;
esac
make localintegration
exit $?
fi