parent
044b8da55a
commit
d5a822884f
288 changed files with 13040 additions and 1 deletions
193
bots/images/scripts/fedora.setup
Executable file
193
bots/images/scripts/fedora.setup
Executable file
|
|
@ -0,0 +1,193 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
IMAGE="$1"
|
||||
|
||||
# avoid failures when running image builds in a non-English locale (ssh transfers the host environment)
|
||||
unset LANGUAGE
|
||||
unset LANG
|
||||
export LC_ALL=C.utf8
|
||||
|
||||
# keep this in sync with avocado/selenium image mapping in bots/tests-invoke
|
||||
if [ "$IMAGE" = fedora-30 ]; then
|
||||
AVOCADO=1
|
||||
fi
|
||||
|
||||
# HACK - virt-resize might not be able to resize our xfs rootfs,
|
||||
# depending on how it was compiled and which plugins are installed,
|
||||
# and will just silently not do it. So we do it here.
|
||||
#
|
||||
xfs_growfs /
|
||||
df -h /
|
||||
|
||||
echo foobar | passwd --stdin root
|
||||
|
||||
HAVE_KUBERNETES=
|
||||
if [ $(uname -m) = x86_64 ]; then
|
||||
HAVE_KUBERNETES=1
|
||||
fi
|
||||
|
||||
# We install all dependencies of the cockpit packages since we want
|
||||
# them to not spontaneously change from one test run to the next when
|
||||
# the distribution repository is updated.
|
||||
#
|
||||
COCKPIT_DEPS="\
|
||||
atomic \
|
||||
device-mapper-multipath \
|
||||
docker \
|
||||
etcd \
|
||||
glib-networking \
|
||||
json-glib \
|
||||
kexec-tools \
|
||||
libssh \
|
||||
libvirt-daemon-kvm \
|
||||
libvirt-client \
|
||||
libvirt-dbus \
|
||||
NetworkManager-team \
|
||||
openssl \
|
||||
PackageKit \
|
||||
pcp \
|
||||
pcp-libs \
|
||||
qemu \
|
||||
realmd \
|
||||
selinux-policy-targeted \
|
||||
setroubleshoot-server \
|
||||
sos \
|
||||
sscg \
|
||||
system-logos \
|
||||
subscription-manager \
|
||||
tuned \
|
||||
virt-install \
|
||||
"
|
||||
|
||||
COCKPIT_DEPS="$COCKPIT_DEPS udisks2 udisks2-lvm2 udisks2-iscsi"
|
||||
|
||||
[ -z "$HAVE_KUBERNETES" ] || COCKPIT_DEPS="$COCKPIT_DEPS kubernetes"
|
||||
|
||||
# We also install the packages necessary to join a FreeIPA domain so
|
||||
# that we don't have to go to the network during a test run.
|
||||
#
|
||||
IPA_CLIENT_PACKAGES="\
|
||||
freeipa-client \
|
||||
oddjob \
|
||||
oddjob-mkhomedir \
|
||||
sssd \
|
||||
sssd-dbus \
|
||||
libsss_sudo \
|
||||
"
|
||||
|
||||
TEST_PACKAGES="\
|
||||
systemtap-runtime-virtguest \
|
||||
valgrind \
|
||||
gdb \
|
||||
targetcli \
|
||||
dnf-automatic \
|
||||
cryptsetup \
|
||||
clevis-luks \
|
||||
socat \
|
||||
tang \
|
||||
podman \
|
||||
libvirt-daemon-config-network \
|
||||
"
|
||||
|
||||
# HACK - For correct work of ABRT in Fedora 26 Alpha release a following
|
||||
# packages are necessary. In Fedora 26 Beta and later these packages should be
|
||||
# installed by default. See https://bugzilla.redhat.com/show_bug.cgi?id=1436941
|
||||
#
|
||||
ABRT_PACKAGES="\
|
||||
abrt-desktop \
|
||||
libreport-plugin-systemd-journal \
|
||||
"
|
||||
|
||||
rm -rf /etc/sysconfig/iptables
|
||||
|
||||
maybe() { if type "$1" >/dev/null 2>&1; then "$@"; fi; }
|
||||
|
||||
# For the D-Bus test server
|
||||
maybe firewall-cmd --permanent --add-port 8765/tcp
|
||||
|
||||
echo 'NETWORKING=yes' > /etc/sysconfig/network
|
||||
|
||||
useradd -c Administrator -G wheel admin
|
||||
echo foobar | passwd --stdin admin
|
||||
|
||||
if [ "${IMAGE%-i386}" != "$IMAGE" ]; then
|
||||
TEST_PACKAGES="${TEST_PACKAGES/podman /}"
|
||||
fi
|
||||
|
||||
if [ "${IMAGE%-testing}" != "$IMAGE" ]; then
|
||||
dnf config-manager --set-enabled updates-testing
|
||||
fi
|
||||
|
||||
dnf $DNF_OPTS -y upgrade
|
||||
dnf $DNF_OPTS -y install $TEST_PACKAGES $COCKPIT_DEPS $IPA_CLIENT_PACKAGES $ABRT_PACKAGES
|
||||
|
||||
if [ -n "$AVOCADO" ]; then
|
||||
|
||||
# enable python3 avocado support repository
|
||||
dnf module install -y avocado:69lts
|
||||
|
||||
dnf $DNF_OPTS -y install \
|
||||
fontconfig \
|
||||
npm \
|
||||
chromium-headless \
|
||||
python3-libvirt \
|
||||
python3-avocado \
|
||||
python3-avocado-plugins-output-html \
|
||||
python3-selenium
|
||||
|
||||
npm -g install chrome-remote-interface
|
||||
echo 'NODE_PATH=/usr/lib/node_modules' >> /etc/environment
|
||||
fi
|
||||
|
||||
dnf $DNF_OPTS -y install mock dnf-plugins-core rpm-build
|
||||
useradd -c Builder -G mock builder
|
||||
|
||||
if [ "${IMAGE%-testing}" != "$IMAGE" ]; then
|
||||
# Enable updates-testing in mock
|
||||
echo "config_opts['yum.conf'] += '[updates-testing]\nenabled=1'" >>/etc/mock/default.cfg
|
||||
fi
|
||||
|
||||
# HACK - mock --installdeps is broken, it seems that it forgets to
|
||||
# copy the source rpm to a location that dnf can actually access. A
|
||||
# workaround is to pass "--no-bootstrap-chroot".
|
||||
#
|
||||
# When you remove this hack, also remove it in fedora-*.install.
|
||||
#
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1447627
|
||||
|
||||
opsys=$(cut -d '-' -f 1 <<< "$IMAGE")
|
||||
version=$(cut -d '-' -f 2 <<< "$IMAGE")
|
||||
# If version is not number (testing/i386) then use Fedora 30
|
||||
if ! [ "$version" -eq "$version" ] 2>/dev/null; then version=30; fi
|
||||
|
||||
su builder -c "/usr/bin/mock --no-bootstrap-chroot --verbose -i $(/var/lib/testvm/build-deps.sh "$opsys $version")"
|
||||
su builder -c "/usr/bin/mock --install --verbose rpmlint"
|
||||
|
||||
# HACK: docker falls over regularly, print its log if it does
|
||||
systemctl start docker || journalctl -u docker
|
||||
|
||||
# our cockpit/base container is only really a thing on x86_64, just skip it on other arches
|
||||
if [ $(uname -m) = x86_64 ]; then
|
||||
docker build -t cockpit/base /var/tmp/cockpit-base
|
||||
fi
|
||||
|
||||
# Configure kubernetes
|
||||
[ -z "$HAVE_KUBERNETES" ] || /var/lib/testvm/kubernetes.setup
|
||||
|
||||
# docker images that we need for integration testing
|
||||
/var/lib/testvm/docker-images.setup
|
||||
|
||||
# reduce image size
|
||||
dnf clean all
|
||||
/var/lib/testvm/zero-disk.setup
|
||||
|
||||
ln -sf ../selinux/config /etc/sysconfig/selinux
|
||||
printf "SELINUX=enforcing\nSELINUXTYPE=targeted\n" > /etc/selinux/config
|
||||
|
||||
# Prevent SSH from hanging for a long time when no external network access
|
||||
echo 'UseDNS no' >> /etc/ssh/sshd_config
|
||||
|
||||
# Audit events to the journal
|
||||
rm -f '/etc/systemd/system/multi-user.target.wants/auditd.service'
|
||||
rm -rf /var/log/audit/
|
||||
Loading…
Add table
Add a link
Reference in a new issue