Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 32 additions & 3 deletions .cirrus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,7 @@ testing_task:


# This task executes tests under unique environments/conditions
special_testing_task:
special_testing_rootless_task:

depends_on:
- "gating"
Expand All @@ -303,9 +303,11 @@ special_testing_task:
only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\*\*\*\s*CIRRUS:\s*TEST\s*IMAGES\s*\*\*\*.*'

env:
SPECIALMODE: 'rootless' # See docs

matrix:
SPECIALMODE: 'rootless' # See docs
SPECIALMODE: 'in_podman' # See docs
TEST_REMOTE_CLIENT: true
TEST_REMOTE_CLIENT: false

timeout_in: 60m

Expand All @@ -322,6 +324,33 @@ special_testing_task:
failed_audit_log_script: 'cat /var/log/audit/audit.log || cat /var/log/kern.log || echo "Uh oh, cat audit.log failed"'
failed_journalctl_b_script: 'journalctl -b || echo "Uh oh, journalctl -b failed"'

special_testing_in_podman_task:

depends_on:
- "gating"
- "varlink_api"
- "vendor"
- "build_each_commit"

only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\*\*\*\s*CIRRUS:\s*TEST\s*IMAGES\s*\*\*\*.*'

env:
SPECIALMODE: 'in_podman' # See docs

timeout_in: 60m

setup_environment_script: '$SCRIPT_BASE/setup_environment.sh |& ${TIMESTAMP}'
integration_test_script: '$SCRIPT_BASE/integration_test.sh |& ${TIMESTAMP}'
df_script: '${DFCMD}'
audit_log_script: 'cat /var/log/audit/audit.log || cat /var/log/kern.log'
journalctl_b_script: 'journalctl -b'

on_failure:
failed_master_script: '$CIRRUS_WORKING_DIR/$SCRIPT_BASE/notice_master_failure.sh'
# Job has already failed, don't fail again and miss collecting data
failed_df_script: '${DFCMD}'
failed_audit_log_script: 'cat /var/log/audit/audit.log || cat /var/log/kern.log || echo "Uh oh, cat audit.log failed"'
failed_journalctl_b_script: 'journalctl -b || echo "Uh oh, journalctl -b failed"'

# Because system tests are stored within the repository, it is sometimes
# necessary to execute them within a PR to validate changes.
Expand Down
17 changes: 10 additions & 7 deletions contrib/cirrus/container_test.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/bin/bash
set -xeuo pipefail
set -xeo pipefail

export GOPATH=/var/tmp/go
export PATH=$HOME/gopath/bin:$PATH:$GOPATH/bin
Expand Down Expand Up @@ -32,10 +32,10 @@ integrationtest=0
unittest=0
validate=0
options=0
noremote=0
remote=0
install_tools_made=0

while getopts "bitnuv" opt; do
while getopts "bituv" opt; do
case "$opt" in
b) build=1
options=1
Expand All @@ -46,9 +46,6 @@ while getopts "bitnuv" opt; do
t) integrationtest=1
options=1
;;
n) noremote=1
options=1
;;
u) unittest=1
options=1
;;
Expand All @@ -58,6 +55,12 @@ while getopts "bitnuv" opt; do
esac
done

# The TEST_REMOTE_CLIENT environment variable decides whether
# to test varlinke
if [[ "$TEST_REMOTE_CLIENT" == "true" ]]; then
remote=1
fi

# If no options are passed, do everything
if [ $options -eq 0 ]; then
build=1
Expand Down Expand Up @@ -131,7 +134,7 @@ if [ $integrationtest -eq 1 ]; then
make TAGS="${TAGS}" test-binaries
make varlink_generate
make ginkgo $INTEGRATION_TEST_ENVS
if [ $noremote -eq 0 ]; then
if [ $remote -eq 1 ]; then
make ginkgo-remote $INTEGRATION_TEST_ENVS
fi
fi
2 changes: 1 addition & 1 deletion contrib/cirrus/integration_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ then
-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 -n
$IN_PODMAN_IMAGE bash $GOSRC/$SCRIPT_BASE/container_test.sh -b -i -t

exit $?
elif [[ "$SPECIALMODE" == "rootless" ]]
Expand Down
5 changes: 4 additions & 1 deletion contrib/cirrus/lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -66,14 +66,17 @@ PRIOR_FEDORA_BASE_IMAGE="fedora-cloud-base-28-1-1-1544474897"
BUILT_IMAGE_SUFFIX="${BUILT_IMAGE_SUFFIX:--$CIRRUS_REPO_NAME-${CIRRUS_BUILD_ID}}"

# Safe env. vars. to transfer from root -> $ROOTLESS_USER (go env handled separetly)
ROOTLESS_ENV_RE='(CIRRUS_.+)|(ROOTLESS_.+)|(.+_IMAGE.*)|(.+_BASE)|(.*DIRPATH)|(.*FILEPATH)|(SOURCE.*)|(DEPEND.*)|(.+_DEPS_.+)|(OS_REL.*)|(.+_ENV_RE)|(TRAVIS)|(CI.+)'
ROOTLESS_ENV_RE='(CIRRUS_.+)|(ROOTLESS_.+)|(.+_IMAGE.*)|(.+_BASE)|(.*DIRPATH)|(.*FILEPATH)|(SOURCE.*)|(DEPEND.*)|(.+_DEPS_.+)|(OS_REL.*)|(.+_ENV_RE)|(TRAVIS)|(CI.+)|(TEST_REMOTE.*)'
# Unsafe env. vars for display
SECRET_ENV_RE='(IRCID)|(ACCOUNT)|(^GC[EP]..+)|(SSH)'

SPECIALMODE="${SPECIALMODE:-none}"
TEST_REMOTE_CLIENT="${TEST_REMOTE_CLIENT:-false}"
export CONTAINER_RUNTIME=${CONTAINER_RUNTIME:-podman}

# IN_PODMAN container image
IN_PODMAN_IMAGE="quay.io/libpod/in_podman:latest"

# When running as root, this may be empty or not, as a user, it MUST be set.
if [[ "$USER" == "root" ]]
then
Expand Down
15 changes: 13 additions & 2 deletions contrib/cirrus/rootless_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@

set -e

remote=0

# The TEST_REMOTE_CLIENT environment variable decides whether
# to test varlinke
if [[ "$TEST_REMOTE_CLIENT" == "true" ]]; then
remote=1
fi

source $(dirname $0)/lib.sh

if [[ "$UID" == "0" ]]
Expand All @@ -25,5 +33,8 @@ cd "$GOSRC"
make
make varlink_generate
make test-binaries
make ginkgo
make ginkgo-remote
if [ $remote -eq 0 ]; then
make ginkgo
else
make ginkgo-remote
fi
7 changes: 2 additions & 5 deletions contrib/cirrus/setup_container_environment.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,12 @@ source $(dirname $0)/lib.sh

req_env_var GOSRC OS_RELEASE_ID CONTAINER_RUNTIME

DIST=$OS_RELEASE_ID
IMAGE=${DIST}podmanbuild

# Since CRIU 3.11 has been pushed to Fedora 28 the checkpoint/restore
# test cases are actually run. As CRIU uses iptables to lock and unlock
# the network during checkpoint and restore it needs the following two
# modules loaded.
modprobe ip6table_nat || :
modprobe iptable_nat || :

# Build the test image
${CONTAINER_RUNTIME} build -t ${IMAGE} -f Dockerfile.${DIST} .
# Pull the test image
${CONTAINER_RUNTIME} pull ${IN_PODMAN_IMAGE}
2 changes: 1 addition & 1 deletion contrib/cirrus/setup_environment.sh
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ case "$SPECIALMODE" in
fi
;;
in_podman) # Assumed to be Fedora
dnf install -y podman buildah
dnf install -y podman
$SCRIPT_BASE/setup_container_environment.sh
;;
*)
Expand Down