diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 7471260cd..5e42094c0 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -45,7 +45,7 @@ jobs: echo 'JSON_CONTENT<> $GITHUB_OUTPUT # define docker images where we will run test install - dockerimages=("debian:bookworm" "debian:trixie" "ubuntu:jammy" "ubuntu:noble") + dockerimages=( "debian:bookworm" "debian:trixie" "ubuntu:focal" "ubuntu:jammy" "ubuntu:noble") # read tests cases and loop them @@ -110,14 +110,16 @@ jobs: apt -y install wget gpg # add armbian repository - URL=apt.armbian.com + URL=beta.armbian.com wget https://${URL}/armbian.key -O key gpg --dearmor < key | tee /usr/share/keyrings/armbian.gpg > /dev/null chmod go+r /usr/share/keyrings/armbian.gpg echo "deb [signed-by=/usr/share/keyrings/armbian.gpg] http://${URL} $RELEASE main ${RELEASE}-utils ${RELEASE}-desktop" | tee /etc/apt/sources.list.d/armbian.list apt update -y apt upgrade -y - apt -y install sudo procps systemd whiptail jq lsb-release iproute2 + apt -y -o Dpkg::Options::="--force-confold" install sudo procps systemd whiptail jq lsb-release iproute2 armbian-bsp-cli-wsl2-x86-current-grub + sudo -b unshare --pid --fork --mount-proc /lib/systemd/systemd --system-unit=basic.target + cat /etc/armbian-distribution-status # install packages / except howdy as its too large export DEBIAN_FRONTEND=noninteractive diff --git a/lib/armbian-configng/config.ng.jobs.json b/lib/armbian-configng/config.ng.jobs.json index c2c59a431..c642d1e2f 100644 --- a/lib/armbian-configng/config.ng.jobs.json +++ b/lib/armbian-configng/config.ng.jobs.json @@ -355,8 +355,37 @@ "src_reference": "", "author": "Igor Pecovnik", "condition": "" + }, + { + "id": "S25", + "description": "Distribution upgrades", + "condition": "[ -f /etc/armbian-distribution-status ] && release_upgrade rolling verify", + "sub": [ + { + "id": "S26", + "description": "Upgrade to latest stable / LTS", + "prompt": "Release upgrade is irriversible operation which upgrades all packages. \n\nResoulted upgrade might break your build beyond repair!", + "command": [ + "release_upgrade stable" + ], + "status": "Active", + "author": "Igor Pecovnik", + "condition": "[ -f /etc/armbian-distribution-status ] && release_upgrade stable verify" + }, + { + "id": "S27", + "description": "Upgrade to rolling unstable", + "prompt": "Release upgrade is irriversible operation which upgrades all packages. \n\nResoulted upgrade might break your build beyond repair!", + "command": [ + "release_upgrade rolling" + ], + "status": "Active", + "author": "Igor Pecovnik", + "condition": "[ -f /etc/armbian-distribution-status ] && release_upgrade rolling verify" + } + ] } - ] + ] }, { "id": "Network", diff --git a/lib/armbian-configng/config.ng.software.sh b/lib/armbian-configng/config.ng.software.sh index 84ff09b24..b1fb481c8 100644 --- a/lib/armbian-configng/config.ng.software.sh +++ b/lib/armbian-configng/config.ng.software.sh @@ -106,3 +106,42 @@ install_docker() { whiptail --msgbox "ERROR ! ${DISTRO} $DISTROID distribution not found in repository!" 7 70 fi } + + +release_upgrade(){ + + local upgrade_type=$1 + local verify=$2 + + local distroid=$DISTROID + + if [[ "${upgrade_type}" == stable ]]; then + local filter=$(grep "supported" /etc/armbian-distribution-status | cut -d"=" -f1) + elif [[ "${upgrade_type}" == unstable ]]; then + local filter=$(grep "eos\|csc" /etc/armbian-distribution-status | cut -d"=" -f1) + else + local filter=$(cat /etc/armbian-distribution-status | cut -d"=" -f1) + fi + + local upgrade=$(for j in $filter; do + for i in $(grep "^${distroid}" /etc/armbian-distribution-status | cut -d";" -f2 | cut -d"=" -f2 | sed "s/,/ /g"); do + if [[ $i == $j ]]; then + echo $i + fi + done + done | tail -1) + if [[ -z $upgrade ]]; then + return 1; + elif [[ -z $verify ]]; then + + [[ -f /etc/apt/sources.list.d/ubuntu.sources ]] && sed "s/$distroid/$upgrade/g" /etc/apt/sources.list.d/ubuntu.sources + [[ -f /etc/apt/sources.list ]] && sed "s/$distroid/$upgrade/g" /etc/apt/sources.list +exit + + apt-get -y update + apt-get -y -o Dpkg::Options::="--force-confold" upgrade --without-new-pkgs + apt-get -y -o Dpkg::Options::="--force-confold" full-upgrade + apt-get -y --purge autoremove + exit + fi +} diff --git a/tests/S26.conf b/tests/S26.conf new file mode 100644 index 000000000..8bd7d091c --- /dev/null +++ b/tests/S26.conf @@ -0,0 +1 @@ +ENABLED=true diff --git a/tests/S27.conf b/tests/S27.conf new file mode 100644 index 000000000..8bd7d091c --- /dev/null +++ b/tests/S27.conf @@ -0,0 +1 @@ +ENABLED=true