mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-06-30 02:57:38 +00:00
[gh] Update Script Test Workflow (#2599)
* Update Workflow * Update Workflow
This commit is contained in:
committed by
GitHub
parent
6827056a1d
commit
40469c5de5
@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: michelroegl-brunner
|
||||
# Author: Michel Roegl-Brunner (michelroegl-brunner)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
||||
color() {
|
||||
@ -11,7 +11,7 @@ catch_errors() {
|
||||
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
|
||||
}
|
||||
|
||||
|
||||
# This function handles errors
|
||||
error_handler() {
|
||||
local line_number="$1"
|
||||
local command="$2"
|
||||
@ -21,8 +21,8 @@ error_handler() {
|
||||
exit 0
|
||||
}
|
||||
verb_ip6() {
|
||||
STD=""
|
||||
return
|
||||
STD=""
|
||||
return
|
||||
}
|
||||
|
||||
msg_info() {
|
||||
@ -30,13 +30,13 @@ msg_info() {
|
||||
echo -ne "${msg}\n"
|
||||
}
|
||||
|
||||
msg_ok() {
|
||||
msg_ok() {
|
||||
local msg="$1"
|
||||
echo -e "${msg}\n"
|
||||
}
|
||||
|
||||
msg_error() {
|
||||
|
||||
|
||||
local msg="$1"
|
||||
echo -e "${msg}\n"
|
||||
}
|
||||
@ -71,7 +71,7 @@ network_check() {
|
||||
}
|
||||
|
||||
update_os() {
|
||||
msg_info "Updating Container OS"
|
||||
msg_info "Updating Container OS"
|
||||
apk update
|
||||
apk upgrade
|
||||
msg_ok "Updated Container OS"
|
||||
@ -82,7 +82,5 @@ motd_ssh() {
|
||||
}
|
||||
|
||||
customize() {
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
return
|
||||
}
|
36
.github/workflows/scripts/app-test/pr-build.func
vendored
36
.github/workflows/scripts/app-test/pr-build.func
vendored
@ -6,12 +6,13 @@
|
||||
variables() {
|
||||
NSAPP=$(echo ${APP,,} | tr -d ' ') # This function sets the NSAPP variable by converting the value of the APP variable to lowercase and removing any spaces.
|
||||
var_install="${NSAPP}-install" # sets the var_install variable by appending "-install" to the value of NSAPP.
|
||||
|
||||
}
|
||||
|
||||
NEXTID=$(pvesh get /cluster/nextid)
|
||||
timezone=$(cat /etc/timezone)
|
||||
header_info(){
|
||||
return
|
||||
header_info() {
|
||||
return
|
||||
}
|
||||
|
||||
base_settings() {
|
||||
@ -20,10 +21,10 @@ base_settings() {
|
||||
DISK_SIZE="4"
|
||||
CORE_COUNT="1"
|
||||
RAM_SIZE="1024"
|
||||
VERBOSE="${1:-no}"
|
||||
VERBOSE="no"
|
||||
PW=""
|
||||
CT_ID=$NEXTID
|
||||
HN="Testing"
|
||||
HN=$NSAPP
|
||||
BRG="vmbr0"
|
||||
NET="dhcp"
|
||||
GATE=""
|
||||
@ -106,7 +107,7 @@ catch_errors() {
|
||||
}
|
||||
|
||||
# This function handles errors
|
||||
error_handler() {
|
||||
error_handler() {
|
||||
local line_number="$1"
|
||||
local command="$2"
|
||||
SCRIPT_NAME=$(basename "$0")
|
||||
@ -120,17 +121,17 @@ msg_info() {
|
||||
echo -ne "${msg}\n"
|
||||
}
|
||||
|
||||
msg_ok() {
|
||||
msg_ok() {
|
||||
local msg="$1"
|
||||
echo -e "${msg}\n"
|
||||
}
|
||||
|
||||
msg_error() {
|
||||
|
||||
|
||||
local msg="$1"
|
||||
echo -e "${msg}\n"
|
||||
}
|
||||
start(){
|
||||
start() {
|
||||
base_settings
|
||||
return
|
||||
}
|
||||
@ -146,9 +147,9 @@ build_container() {
|
||||
TEMP_DIR=$(mktemp -d)
|
||||
pushd $TEMP_DIR >/dev/null
|
||||
if [ "$var_os" == "alpine" ]; then
|
||||
export FUNCTIONS_FILE_PATH="$(cat /root/actions-runner/_work/ProxmoxVE/ProxmoxVE/.github/workflows/scripts/app-test/pr-alpine-install.func)"
|
||||
export FUNCTIONS_FILE_PATH="$(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/.github/workflows/scripts/app-test/pr-alpine-install.func)"
|
||||
else
|
||||
export FUNCTIONS_FILE_PATH="$(cat /root/actions-runner/_work/ProxmoxVE/ProxmoxVE/.github/workflows/scripts/app-test/pr-install.func)"
|
||||
export FUNCTIONS_FILE_PATH="$(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/.github/workflows/scripts/app-test/pr-install.func)"
|
||||
fi
|
||||
|
||||
export CACHER="$APT_CACHER"
|
||||
@ -182,9 +183,8 @@ build_container() {
|
||||
"
|
||||
echo "Container ID: $CTID"
|
||||
|
||||
|
||||
# This executes create_lxc.sh and creates the container and .conf file
|
||||
bash /root/actions-runner/_work/ProxmoxVE/ProxmoxVE/.github/workflows/scripts/app-test/pr-create-lxc.sh
|
||||
bash -c "$(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/.github/workflows/scripts/app-test/pr-create-lxc.sh)"
|
||||
|
||||
LXC_CONFIG=/etc/pve/lxc/${CTID}.conf
|
||||
if [ "$CT_TYPE" == "0" ]; then
|
||||
@ -233,6 +233,7 @@ EOF
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# This starts the container and executes <app>-install.sh
|
||||
msg_info "Starting LXC Container"
|
||||
pct start "$CTID"
|
||||
@ -242,7 +243,7 @@ EOF
|
||||
msg_error "No install script found for $APP"
|
||||
exit 1
|
||||
fi
|
||||
if [ "$var_os" == "alpine" ]; then
|
||||
if [ "$var_os" == "alpine" ]; then
|
||||
sleep 3
|
||||
pct exec "$CTID" -- /bin/sh -c 'cat <<EOF >/etc/apk/repositories
|
||||
http://dl-cdn.alpinelinux.org/alpine/latest-stable/main
|
||||
@ -250,11 +251,10 @@ http://dl-cdn.alpinelinux.org/alpine/latest-stable/community
|
||||
EOF'
|
||||
pct exec "$CTID" -- ash -c "apk add bash >/dev/null"
|
||||
fi
|
||||
lxc-attach -n "$CTID" -- bash -c "$(cat /root/actions-runner/_work/ProxmoxVE/ProxmoxVE/install/$var_install.sh)" $var_install.sh
|
||||
lxc-attach -n "$CTID" -- bash -c "$(cat /root/actions-runner/_work/ProxmoxVE/ProxmoxVE/install/$var_install.sh)"
|
||||
|
||||
}
|
||||
|
||||
description(){
|
||||
IP=$(pct exec "$CTID" ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1)
|
||||
return
|
||||
}
|
||||
description() {
|
||||
IP=$(pct exec "$CTID" ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1)
|
||||
}
|
@ -11,8 +11,9 @@ catch_errors() {
|
||||
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
|
||||
}
|
||||
|
||||
# This function handles errors
|
||||
error_handler() {
|
||||
local exit_code="$?"
|
||||
local exit_code="$?"
|
||||
local line_number="$1"
|
||||
local command="$2"
|
||||
local error_message="Failure in line $line_number: exit code $exit_code: while executing command $command"
|
||||
@ -20,7 +21,7 @@ error_handler() {
|
||||
exit 100
|
||||
}
|
||||
verb_ip6() {
|
||||
return
|
||||
return
|
||||
}
|
||||
|
||||
msg_info() {
|
||||
@ -28,18 +29,17 @@ msg_info() {
|
||||
echo -ne "${msg}\n"
|
||||
}
|
||||
|
||||
msg_ok() {
|
||||
msg_ok() {
|
||||
local msg="$1"
|
||||
echo -e "${msg}\n"
|
||||
}
|
||||
|
||||
msg_error() {
|
||||
|
||||
|
||||
local msg="$1"
|
||||
echo -e "${msg}\n"
|
||||
}
|
||||
|
||||
|
||||
VALIDCT=$(pvesm status -content rootdir | awk 'NR>1')
|
||||
if [ -z "$VALIDCT" ]; then
|
||||
msg_error "Unable to detect a valid Container Storage location."
|
||||
@ -64,9 +64,12 @@ function select_storage() {
|
||||
CONTENT='vztmpl'
|
||||
CONTENT_LABEL='Container template'
|
||||
;;
|
||||
*) false || { msg_error "Invalid storage class."; exit 201; };;
|
||||
*) false || {
|
||||
msg_error "Invalid storage class."
|
||||
exit 201
|
||||
} ;;
|
||||
esac
|
||||
|
||||
|
||||
# This Queries all storage locations
|
||||
local -a MENU
|
||||
while read -r line; do
|
||||
@ -80,23 +83,32 @@ function select_storage() {
|
||||
fi
|
||||
MENU+=("$TAG" "$ITEM" "OFF")
|
||||
done < <(pvesm status -content $CONTENT | awk 'NR>1')
|
||||
|
||||
|
||||
# Select storage location
|
||||
if [ $((${#MENU[@]}/3)) -eq 1 ]; then
|
||||
if [ $((${#MENU[@]} / 3)) -eq 1 ]; then
|
||||
printf ${MENU[0]}
|
||||
else
|
||||
msg_error "STORAGE ISSUES!"
|
||||
exit 202
|
||||
msg_error "STORAGE ISSUES!"
|
||||
exit 202
|
||||
fi
|
||||
}
|
||||
|
||||
[[ "${CTID:-}" ]] || {
|
||||
msg_error "You need to set 'CTID' variable."
|
||||
exit 203
|
||||
}
|
||||
[[ "${PCT_OSTYPE:-}" ]] || {
|
||||
msg_error "You need to set 'PCT_OSTYPE' variable."
|
||||
exit 204
|
||||
}
|
||||
|
||||
# Test if ID is valid
|
||||
[ "$CTID" -ge "100" ] || {
|
||||
msg_error "ID cannot be less than 100."
|
||||
exit 205
|
||||
}
|
||||
|
||||
[[ "${CTID:-}" ]] || { msg_error "You need to set 'CTID' variable."; exit 203; }
|
||||
[[ "${PCT_OSTYPE:-}" ]] || { msg_error "You need to set 'PCT_OSTYPE' variable."; exit 204; }
|
||||
|
||||
[ "$CTID" -ge "100" ] || { msg_error "ID cannot be less than 100."; exit 205; }
|
||||
|
||||
# Test if ID is in use
|
||||
if pct status $CTID &>/dev/null; then
|
||||
echo -e "ID '$CTID' is already in use."
|
||||
unset CTID
|
||||
@ -110,10 +122,12 @@ CONTAINER_STORAGE=$(select_storage container) || exit
|
||||
|
||||
pveam update >/dev/null
|
||||
|
||||
|
||||
TEMPLATE_SEARCH=${PCT_OSTYPE}-${PCT_OSVERSION:-}
|
||||
mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($TEMPLATE_SEARCH.*\)/\1/p" | sort -t - -k 2 -V)
|
||||
[ ${#TEMPLATES[@]} -gt 0 ] || { msg_error "Unable to find a template when searching for '$TEMPLATE_SEARCH'."; exit 207; }
|
||||
[ ${#TEMPLATES[@]} -gt 0 ] || {
|
||||
msg_error "Unable to find a template when searching for '$TEMPLATE_SEARCH'."
|
||||
exit 207
|
||||
}
|
||||
TEMPLATE="${TEMPLATES[-1]}"
|
||||
|
||||
TEMPLATE_PATH="/var/lib/vz/template/cache/$TEMPLATE"
|
||||
@ -121,28 +135,29 @@ TEMPLATE_PATH="/var/lib/vz/template/cache/$TEMPLATE"
|
||||
if ! pveam list "$TEMPLATE_STORAGE" | grep -q "$TEMPLATE"; then
|
||||
[[ -f "$TEMPLATE_PATH" ]] && rm -f "$TEMPLATE_PATH"
|
||||
pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null ||
|
||||
{ msg_error "A problem occurred while downloading the LXC template."; exit 208; }
|
||||
{
|
||||
msg_error "A problem occurred while downloading the LXC template."
|
||||
exit 208
|
||||
}
|
||||
fi
|
||||
|
||||
|
||||
grep -q "root:100000:65536" /etc/subuid || echo "root:100000:65536" >> /etc/subuid
|
||||
grep -q "root:100000:65536" /etc/subgid || echo "root:100000:65536" >> /etc/subgid
|
||||
grep -q "root:100000:65536" /etc/subuid || echo "root:100000:65536" >>/etc/subuid
|
||||
grep -q "root:100000:65536" /etc/subgid || echo "root:100000:65536" >>/etc/subgid
|
||||
|
||||
PCT_OPTIONS=(${PCT_OPTIONS[@]:-${DEFAULT_PCT_OPTIONS[@]}})
|
||||
[[ " ${PCT_OPTIONS[@]} " =~ " -rootfs " ]] || PCT_OPTIONS+=(-rootfs "$CONTAINER_STORAGE:${PCT_DISK_SIZE:-8}")
|
||||
|
||||
if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[@]}" &>/dev/null; then
|
||||
[[ -f "$TEMPLATE_PATH" ]] && rm -f "$TEMPLATE_PATH"
|
||||
|
||||
pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null ||
|
||||
{
|
||||
msg_error "A problem occurred while re-downloading the LXC template."
|
||||
exit 208
|
||||
}
|
||||
|
||||
if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[@]}" &>/dev/null; then
|
||||
[[ -f "$TEMPLATE_PATH" ]] && rm -f "$TEMPLATE_PATH"
|
||||
|
||||
|
||||
pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null ||
|
||||
{ msg_error "A problem occurred while re-downloading the LXC template."; exit 208; }
|
||||
|
||||
|
||||
if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[@]}" &>/dev/null; then
|
||||
msg_error "A problem occurred while trying to create container after re-downloading template."
|
||||
exit 200
|
||||
fi
|
||||
msg_error "A problem occurred while trying to create container after re-downloading template."
|
||||
exit 200
|
||||
fi
|
||||
|
||||
fi
|
||||
|
@ -1,31 +1,31 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: michelroegl-brunner
|
||||
# Author: Michel Roegl-Brunner (michelroegl-brunner)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
|
||||
color() {
|
||||
return
|
||||
}
|
||||
|
||||
SCRIPT_NAME="${BASH_SOURCE[0]:-unknown_script}"
|
||||
catch_errors() {
|
||||
set -Euoe pipefail
|
||||
set -Euo pipefail
|
||||
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
|
||||
}
|
||||
|
||||
error_handler() {
|
||||
local line_number="$1"
|
||||
local command="$2"
|
||||
local error_message="$SCRIPT_NAME: Failure in line $line_number while executing command '$command'"
|
||||
echo -e "\n$error_message"
|
||||
exit 300
|
||||
local error_message="Failure in line $line_number while executing command '$command'"
|
||||
echo -e "\n$error_message\n" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
verb_ip6() {
|
||||
STD="silent"
|
||||
silent() {
|
||||
"$@" >/dev/null 2>&1 || error_handler "${BASH_LINENO[0]}" "$*"
|
||||
}
|
||||
STD="silent"
|
||||
silent() {
|
||||
"$@" >/dev/null 2>&1 || error_handler "${BASH_LINENO[0]}" "$*"
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
msg_info() {
|
||||
@ -33,19 +33,21 @@ msg_info() {
|
||||
echo -ne "${msg}\n"
|
||||
}
|
||||
|
||||
msg_ok() {
|
||||
msg_ok() {
|
||||
local msg="$1"
|
||||
echo -e "${msg}\n"
|
||||
}
|
||||
|
||||
msg_error() {
|
||||
|
||||
|
||||
local msg="$1"
|
||||
echo -e "${msg}\n"
|
||||
}
|
||||
RETRY_NUM=10
|
||||
RETRY_EVERY=3
|
||||
|
||||
RETRY_NUM=10
|
||||
RETRY_EVERY=3
|
||||
setting_up_container() {
|
||||
|
||||
sed -i "/$LANG/ s/\(^# \)//" /etc/locale.gen
|
||||
locale_line=$(grep -v '^#' /etc/locale.gen | grep -E '^[a-zA-Z]' | awk '{print $1}' | head -n 1)
|
||||
echo "LANG=${locale_line}" >/etc/default/locale
|
||||
@ -53,12 +55,11 @@ setting_up_container() {
|
||||
export LANG=${locale_line}
|
||||
echo $tz >/etc/timezone
|
||||
ln -sf /usr/share/zoneinfo/$tz /etc/localtime
|
||||
|
||||
|
||||
for ((i = RETRY_NUM; i > 0; i--)); do
|
||||
if [ "$(hostname -I)" != "" ]; then
|
||||
break
|
||||
fi
|
||||
echo 1>&2 -en "No Network! "
|
||||
sleep $RETRY_EVERY
|
||||
done
|
||||
if [ "$(hostname -I)" = "" ]; then
|
||||
@ -68,8 +69,6 @@ setting_up_container() {
|
||||
fi
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
systemctl disable -q --now systemd-networkd-wait-online.service
|
||||
msg_ok "Set up Container OS"
|
||||
msg_ok "Network Connected: $(hostname -I)"
|
||||
}
|
||||
|
||||
network_check() {
|
||||
@ -79,11 +78,10 @@ network_check() {
|
||||
}
|
||||
|
||||
update_os() {
|
||||
msg_info "Updating Container OS"
|
||||
apt-get update
|
||||
apt-get -o Dpkg::Options::="--force-confold" -y dist-upgrade
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
apt-get update >/dev/null 2>&1
|
||||
apt-get -o Dpkg::Options::="--force-confold" -y dist-upgrade >/dev/null
|
||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
msg_ok "Updated Container OS"
|
||||
}
|
||||
|
||||
motd_ssh() {
|
||||
@ -91,5 +89,5 @@ motd_ssh() {
|
||||
}
|
||||
|
||||
customize() {
|
||||
return
|
||||
return
|
||||
}
|
Reference in New Issue
Block a user