Skip to content

Commit

Permalink
Enable distro upgrades procedure
Browse files Browse the repository at this point in the history
  • Loading branch information
igorpecovnik committed Sep 28, 2024
1 parent bd256bc commit b1f0e80
Show file tree
Hide file tree
Showing 7 changed files with 88 additions and 7 deletions.
8 changes: 5 additions & 3 deletions .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
echo 'JSON_CONTENT<<EOF' >> $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
Expand Down Expand Up @@ -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
Expand Down
31 changes: 30 additions & 1 deletion lib/armbian-configng/config.ng.jobs.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
46 changes: 46 additions & 0 deletions lib/armbian-configng/config.ng.software.sh
Original file line number Diff line number Diff line change
Expand Up @@ -106,3 +106,49 @@ 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
distroid=bookworm

if [[ "${upgrade_type}" == stable ]]; then
local filter=$(grep "supported" /etc/armbian-distribution-status | cut -d"=" -f1)
elif [[ "${upgrade_type}" == rolling ]]; then
local filter=$(grep "eos\|csc" /etc/armbian-distribution-status | cut -d"=" -f1 | sed "s/sid/testing/g")
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

ls -l /etc/apt/sources.list.d/
ls -l /etc/apt/
echo "####"
[[ -f /etc/apt/sources.list.d/ubuntu.sources ]] && sed -i "s/$distroid/$upgrade/g" /etc/apt/sources.list.d/ubuntu.sources
[[ -f /etc/apt/sources.list.d/ubuntu.sources ]] && sed -i "s/$distroid/$upgrade/g" /etc/apt/sources.list.d/debian.sources
[[ -f /etc/apt/sources.list ]] && sed -i "s/$distroid/$upgrade/g" /etc/apt/sources.list
[[ "${upgrade}" == "testing" ]] && upgrade="sid"
[[ -f /etc/apt/sources.list.d/armbian.list ]] && sed -i "s/$distroid/$upgrade/g" /etc/apt/sources.list.d/armbian.list
apt_install_wrapper apt-get -y update
apt_install_wrapper apt-get -y -o Dpkg::Options::="--force-confold" upgrade --without-new-pkgs
apt_install_wrapper apt-get -y -o Dpkg::Options::="--force-confold" full-upgrade
apt_install_wrapper apt-get -y --purge autoremove
cat /etc/debian_version
cat /etc/os-release
fi
}
4 changes: 2 additions & 2 deletions lib/armbian-configng/config.ng.system.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ module_options+=(
#
function apt_install_wrapper() {
if [ -t 0 ]; then
debconf-apt-progress -- "$@"
DEBIAN_FRONTEND=noninteractive debconf-apt-progress -- "$@"
else
# Terminal not defined - proceed without TUI
"$@"
DEBIAN_FRONTEND=noninteractive "$@"
fi
}

Expand Down
2 changes: 1 addition & 1 deletion tests/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@
- ENABLED=false|true
- PREINSTALL="cmd" in order to satisfy test case
- CONDITION must return 0 for test success

- RELEASE="bookworm:jammy:noble" run on specific or leave empty to run on all
2 changes: 2 additions & 0 deletions tests/S26.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ENABLED=true
RELEASE="jammy:bullseye"
2 changes: 2 additions & 0 deletions tests/S27.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ENABLED=true
RELEASE="bullseye:bookworm:trixie:jammy:noble"

0 comments on commit b1f0e80

Please sign in to comment.