mirror of
https://github.com/containers/podman.git
synced 2026-06-04 05:51:51 -04:00
The main gh action is just there to install lima and then call the main ci.sh script which uses lima to start the right VM and then run the tests inside there mostly for linux tasks where possible. Inside the VM we use the runner.sh script to setup the env and launch the final test. Signed-off-by: Paul Holzinger <pholzing@redhat.com>
114 lines
3.2 KiB
Bash
114 lines
3.2 KiB
Bash
# This must be sourced from other scripts to work.
|
|
|
|
OS_RELEASE_VER="$(source /etc/os-release; echo $VERSION_ID | tr -d '.')"
|
|
OS_RELEASE_ID="$(source /etc/os-release; echo $ID)"
|
|
OS_REL_VER="$OS_RELEASE_ID-$OS_RELEASE_VER"
|
|
|
|
|
|
function die() {
|
|
echo "$1" >&2
|
|
exit 1
|
|
}
|
|
|
|
function parse_args() {
|
|
# TEST name, i.e. int or sys
|
|
TEST=
|
|
# i.e. fedora-current
|
|
DISTRO_NAME=
|
|
# local or remote podman
|
|
MODE=local
|
|
# root or rootless
|
|
PRIV=rootless
|
|
case "$#" in
|
|
2)
|
|
TEST=$1
|
|
DISTRO_NAME=$2
|
|
;;
|
|
3)
|
|
TEST=$1
|
|
PRIV=$2
|
|
DISTRO_NAME=$3
|
|
;;
|
|
4)
|
|
TEST=$1
|
|
MODE=$2
|
|
PRIV=$3
|
|
DISTRO_NAME=$4
|
|
;;
|
|
*)
|
|
die "Invalid number of arguments $#, need 2-4"
|
|
;;
|
|
esac
|
|
|
|
validate_distro "$DISTRO_NAME"
|
|
validate_mode "$MODE"
|
|
}
|
|
|
|
function validate_distro() {
|
|
case "$1" in
|
|
"fedora-current"|"fedora-prior"|"fedora-rawhide"|"debian-sid")
|
|
;;
|
|
*)
|
|
die "Unknown DISTRO_NAME '$1' set"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
function validate_mode() {
|
|
case "$1" in
|
|
"local"|"remote")
|
|
;;
|
|
*)
|
|
# upgrade test uses mode to pass the upgrade version
|
|
if [[ "$TEST" != "upgrade" ]]; then
|
|
die "Unknown MODE '$1' set"
|
|
fi
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# Remove all files provided by the distro version of podman.
|
|
# All VM cache-images used for testing include the distro podman because (1) it's
|
|
# required for podman-in-podman testing and (2) it somewhat simplifies the task
|
|
# of pulling in necessary prerequisites packages as the set can change over time.
|
|
# For general CI testing however, calling this function makes sure the system
|
|
# can only run the compiled source version.
|
|
function remove_packaged_podman_files() {
|
|
echo "Removing packaged podman files to prevent conflicts with source build and testing."
|
|
|
|
# If any binaries are resident they could cause unexpected pollution
|
|
for unit in podman.socket podman-auto-update.timer
|
|
do
|
|
for state in enabled active
|
|
do
|
|
if sudo systemctl --quiet is-$state $unit
|
|
then
|
|
echo "Warning: $unit found $state prior to packaged-file removal"
|
|
sudo systemctl --quiet disable $unit || true
|
|
sudo systemctl --quiet stop $unit || true
|
|
fi
|
|
done
|
|
done
|
|
|
|
# OS_RELEASE_ID is defined by automation-library
|
|
# shellcheck disable=SC2154
|
|
if [[ "$OS_RELEASE_ID" =~ "debian" ]]
|
|
then
|
|
LISTING_CMD="dpkg-query -L podman"
|
|
else
|
|
LISTING_CMD="rpm -ql podman"
|
|
fi
|
|
|
|
# delete the podman socket in case it has been created previously.
|
|
# Do so without running podman, lest that invocation initialize unwanted state.
|
|
sudo rm -f /run/podman/podman.sock /run/user/$(id -u)/podman/podman.sock || true
|
|
|
|
# yum/dnf/dpkg may list system directories, only remove files
|
|
$LISTING_CMD | while read fullpath
|
|
do
|
|
# Sub-directories may contain unrelated/valuable stuff
|
|
if [[ -d "$fullpath" ]]; then continue; fi
|
|
sudo rm -f "$fullpath"
|
|
done
|
|
}
|