mirror of
https://github.com/containers/podman.git
synced 2025-06-23 02:18:13 +08:00
Merge pull request #3236 from baude/testsplitrootless
split rootless local and remote testing
This commit is contained in:
35
.cirrus.yml
35
.cirrus.yml
@ -292,7 +292,7 @@ testing_task:
|
|||||||
|
|
||||||
|
|
||||||
# This task executes tests under unique environments/conditions
|
# This task executes tests under unique environments/conditions
|
||||||
special_testing_task:
|
special_testing_rootless_task:
|
||||||
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- "gating"
|
- "gating"
|
||||||
@ -303,9 +303,11 @@ special_testing_task:
|
|||||||
only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\*\*\*\s*CIRRUS:\s*TEST\s*IMAGES\s*\*\*\*.*'
|
only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\*\*\*\s*CIRRUS:\s*TEST\s*IMAGES\s*\*\*\*.*'
|
||||||
|
|
||||||
env:
|
env:
|
||||||
matrix:
|
|
||||||
SPECIALMODE: 'rootless' # See docs
|
SPECIALMODE: 'rootless' # See docs
|
||||||
SPECIALMODE: 'in_podman' # See docs
|
|
||||||
|
matrix:
|
||||||
|
TEST_REMOTE_CLIENT: true
|
||||||
|
TEST_REMOTE_CLIENT: false
|
||||||
|
|
||||||
timeout_in: 60m
|
timeout_in: 60m
|
||||||
|
|
||||||
@ -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_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"'
|
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
|
# Because system tests are stored within the repository, it is sometimes
|
||||||
# necessary to execute them within a PR to validate changes.
|
# necessary to execute them within a PR to validate changes.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -xeuo pipefail
|
set -xeo pipefail
|
||||||
|
|
||||||
export GOPATH=/var/tmp/go
|
export GOPATH=/var/tmp/go
|
||||||
export PATH=$HOME/gopath/bin:$PATH:$GOPATH/bin
|
export PATH=$HOME/gopath/bin:$PATH:$GOPATH/bin
|
||||||
@ -32,10 +32,10 @@ integrationtest=0
|
|||||||
unittest=0
|
unittest=0
|
||||||
validate=0
|
validate=0
|
||||||
options=0
|
options=0
|
||||||
noremote=0
|
remote=0
|
||||||
install_tools_made=0
|
install_tools_made=0
|
||||||
|
|
||||||
while getopts "bitnuv" opt; do
|
while getopts "bituv" opt; do
|
||||||
case "$opt" in
|
case "$opt" in
|
||||||
b) build=1
|
b) build=1
|
||||||
options=1
|
options=1
|
||||||
@ -46,9 +46,6 @@ while getopts "bitnuv" opt; do
|
|||||||
t) integrationtest=1
|
t) integrationtest=1
|
||||||
options=1
|
options=1
|
||||||
;;
|
;;
|
||||||
n) noremote=1
|
|
||||||
options=1
|
|
||||||
;;
|
|
||||||
u) unittest=1
|
u) unittest=1
|
||||||
options=1
|
options=1
|
||||||
;;
|
;;
|
||||||
@ -58,6 +55,12 @@ while getopts "bitnuv" opt; do
|
|||||||
esac
|
esac
|
||||||
done
|
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 no options are passed, do everything
|
||||||
if [ $options -eq 0 ]; then
|
if [ $options -eq 0 ]; then
|
||||||
build=1
|
build=1
|
||||||
@ -131,7 +134,7 @@ if [ $integrationtest -eq 1 ]; then
|
|||||||
make TAGS="${TAGS}" test-binaries
|
make TAGS="${TAGS}" test-binaries
|
||||||
make varlink_generate
|
make varlink_generate
|
||||||
make ginkgo $INTEGRATION_TEST_ENVS
|
make ginkgo $INTEGRATION_TEST_ENVS
|
||||||
if [ $noremote -eq 0 ]; then
|
if [ $remote -eq 1 ]; then
|
||||||
make ginkgo-remote $INTEGRATION_TEST_ENVS
|
make ginkgo-remote $INTEGRATION_TEST_ENVS
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -19,7 +19,7 @@ then
|
|||||||
-e "CONMON_BINARY=/usr/libexec/podman/conmon" \
|
-e "CONMON_BINARY=/usr/libexec/podman/conmon" \
|
||||||
-e "DIST=$OS_RELEASE_ID" \
|
-e "DIST=$OS_RELEASE_ID" \
|
||||||
-e "CONTAINER_RUNTIME=$CONTAINER_RUNTIME" \
|
-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 $?
|
exit $?
|
||||||
elif [[ "$SPECIALMODE" == "rootless" ]]
|
elif [[ "$SPECIALMODE" == "rootless" ]]
|
||||||
|
@ -66,7 +66,7 @@ PRIOR_FEDORA_BASE_IMAGE="fedora-cloud-base-28-1-1-1544474897"
|
|||||||
BUILT_IMAGE_SUFFIX="${BUILT_IMAGE_SUFFIX:--$CIRRUS_REPO_NAME-${CIRRUS_BUILD_ID}}"
|
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)
|
# 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
|
# Unsafe env. vars for display
|
||||||
SECRET_ENV_RE='(IRCID)|(ACCOUNT)|(^GC[EP]..+)|(SSH)'
|
SECRET_ENV_RE='(IRCID)|(ACCOUNT)|(^GC[EP]..+)|(SSH)'
|
||||||
|
|
||||||
@ -74,6 +74,9 @@ SPECIALMODE="${SPECIALMODE:-none}"
|
|||||||
TEST_REMOTE_CLIENT="${TEST_REMOTE_CLIENT:-false}"
|
TEST_REMOTE_CLIENT="${TEST_REMOTE_CLIENT:-false}"
|
||||||
export CONTAINER_RUNTIME=${CONTAINER_RUNTIME:-podman}
|
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.
|
# When running as root, this may be empty or not, as a user, it MUST be set.
|
||||||
if [[ "$USER" == "root" ]]
|
if [[ "$USER" == "root" ]]
|
||||||
then
|
then
|
||||||
|
@ -2,6 +2,14 @@
|
|||||||
|
|
||||||
set -e
|
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
|
source $(dirname $0)/lib.sh
|
||||||
|
|
||||||
if [[ "$UID" == "0" ]]
|
if [[ "$UID" == "0" ]]
|
||||||
@ -25,5 +33,8 @@ cd "$GOSRC"
|
|||||||
make
|
make
|
||||||
make varlink_generate
|
make varlink_generate
|
||||||
make test-binaries
|
make test-binaries
|
||||||
make ginkgo
|
if [ $remote -eq 0 ]; then
|
||||||
make ginkgo-remote
|
make ginkgo
|
||||||
|
else
|
||||||
|
make ginkgo-remote
|
||||||
|
fi
|
||||||
|
@ -5,9 +5,6 @@ source $(dirname $0)/lib.sh
|
|||||||
|
|
||||||
req_env_var GOSRC OS_RELEASE_ID CONTAINER_RUNTIME
|
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
|
# 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
|
# test cases are actually run. As CRIU uses iptables to lock and unlock
|
||||||
# the network during checkpoint and restore it needs the following two
|
# the network during checkpoint and restore it needs the following two
|
||||||
@ -15,5 +12,5 @@ IMAGE=${DIST}podmanbuild
|
|||||||
modprobe ip6table_nat || :
|
modprobe ip6table_nat || :
|
||||||
modprobe iptable_nat || :
|
modprobe iptable_nat || :
|
||||||
|
|
||||||
# Build the test image
|
# Pull the test image
|
||||||
${CONTAINER_RUNTIME} build -t ${IMAGE} -f Dockerfile.${DIST} .
|
${CONTAINER_RUNTIME} pull ${IN_PODMAN_IMAGE}
|
||||||
|
@ -87,7 +87,7 @@ case "$SPECIALMODE" in
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
in_podman) # Assumed to be Fedora
|
in_podman) # Assumed to be Fedora
|
||||||
dnf install -y podman buildah
|
dnf install -y podman
|
||||||
$SCRIPT_BASE/setup_container_environment.sh
|
$SCRIPT_BASE/setup_container_environment.sh
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
Reference in New Issue
Block a user