travis: wait for the container to fully boot up

This avoids nasty race conditions between dnf/apt-get and unfinished
population of /tmp (among other things), as `docker exec` allows commands
to run before the system is fully booted (i.e. initializing/starting
state reported by `systemctl is-system-running`).
This commit is contained in:
Frantisek Sumsal 2019-12-23 20:54:08 +01:00
parent c695dcf929
commit 14157349db
2 changed files with 8 additions and 2 deletions

View File

@ -39,6 +39,10 @@ for phase in "${PHASES[@]}"; do
-w /build --privileged=true --name $CONT_NAME \
-dit --net=host debian-with-systemd/latest /bin/systemd
$DOCKER_EXEC bash -c "echo deb-src http://deb.debian.org/debian $DEBIAN_RELEASE main >>/etc/apt/sources.list"
# Wait for the container to properly boot up, otherwise we were
# running following apt-get commands during the initializing/starting
# (early/late bootup) phase, which caused nasty race conditions
$DOCKER_EXEC bash -c 'systemctl is-system-running --wait || :'
$DOCKER_EXEC apt-get -y update
$DOCKER_EXEC apt-get -y build-dep systemd
$DOCKER_EXEC apt-get -y install "${ADDITIONAL_DEPS[@]}"

View File

@ -44,8 +44,10 @@ for phase in "${PHASES[@]}"; do
$DOCKER_RUN -v $REPO_ROOT:/build:rw \
-w /build --privileged=true --name $CONT_NAME \
-dit --net=host fedora:$FEDORA_RELEASE /sbin/init
# Beautiful workaround for Fedora's version of Docker
sleep 1
# Wait for the container to properly boot up, otherwise we were
# running following dnf commands during the initializing/starting
# (early/late bootup) phase, which caused nasty race conditions
$DOCKER_EXEC bash -c 'systemctl is-system-running --wait || :'
$DOCKER_EXEC dnf makecache
# Install necessary build/test requirements
$DOCKER_EXEC dnf -y --exclude selinux-policy\* upgrade