#!/bin/sh set -eux # from standard-test-source SOURCE="$(pwd)/source" LOGS="$(pwd)/logs" TESTS="$(pwd)/tests" mkdir -p "$LOGS" chmod a+w "$LOGS" # install browser; on RHEL, use chromium from epel if ! rpm -q chromium-headless; then if grep -q 'ID=.*rhel' /etc/os-release; then dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm dnf config-manager --enable epel fi dnf install -y chromium-headless fi # create user account for logging in if ! id admin 2>/dev/null; then useradd -c Administrator -G wheel admin echo admin:foobar | chpasswd fi # avoid sudo lecture during tests su -c 'echo foobar | sudo --stdin whoami' - admin # create user account for running the test if ! id runtest 2>/dev/null; then useradd -c 'Test runner' runtest # allow test to set up things on the machine mkdir -p /root/.ssh curl https://raw.githubusercontent.com/cockpit-project/bots/master/machine/identity.pub >> /root/.ssh/authorized_keys chmod 600 /root/.ssh/authorized_keys fi chown -R runtest "$SOURCE" # disable core dumps, we rather investigate them upstream where test VMs are accessible echo core > /proc/sys/kernel/core_pattern # pull images for system podman tests podman pull docker.io/busybox podman pull docker.io/alpine podman pull docker.io/registry:2 # HACK: avoid leftover user podman processes between login sessions: https://github.com/containers/podman/issues/7021 mkdir -p /etc/systemd/user/podman.service.d printf '[Service]\nKillMode=\n' > /etc/systemd/user/podman.service.d/cleanup.conf # pull images for user podman tests; podman insists on user session loginctl enable-linger $(id -u admin) sudo -i -u admin bash << EOF podman pull docker.io/busybox podman pull docker.io/alpine podman pull docker.io/registry:2 EOF loginctl disable-linger $(id -u admin) systemctl enable --now cockpit.socket podman.socket # Run tests as unprivileged user su - -c "env SOURCE=$SOURCE LOGS=$LOGS $TESTS/run-test.sh" runtest RC=$(cat $LOGS/exitcode) exit ${RC:-1}