Skip to content

Commit

Permalink
Enable distro upgrades procedure (#123)
Browse files Browse the repository at this point in the history
  • Loading branch information
igorpecovnik authored Sep 30, 2024
1 parent 93f4dc2 commit b379f80
Show file tree
Hide file tree
Showing 7 changed files with 91 additions and 5 deletions.
6 changes: 4 additions & 2 deletions .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
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 || release_upgrade stable 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
2 changes: 2 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,5 @@ install_docker() {
whiptail --msgbox "ERROR ! ${DISTRO} $DISTROID distribution not found in repository!" 7 70
fi
}


51 changes: 50 additions & 1 deletion lib/armbian-configng/config.ng.system.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,62 @@ 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
}

module_options+=(
["release_upgrade,author"]="Igor Pecovnik"
["release_upgrade,ref_link"]=""
["release_upgrade,feature"]="Upgrade upstream distribution release"
["release_upgrade,desc"]="Upgrade to next stable or rolling release"
["release_upgrade,example"]="release_upgrade stable verify"
["release_upgrade,status"]="Active"
)
#
# Upgrade distribution
#
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}" == 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
[[ -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/debian.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" # our repo and everything is tied to 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
fi
}

module_options+=(
["install_de,author"]="Igor Pecovnik"
["install_de,ref_link"]=""
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 b379f80

Please sign in to comment.