Skip to content

Commit 431c066

Browse files
committed
Add action for generating RPI imager JSON
1 parent 6d5071e commit 431c066

File tree

1 file changed

+139
-0
lines changed

1 file changed

+139
-0
lines changed
Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
name: Update Rpi imager download JSON index
2+
on:
3+
# repository_dispatch:
4+
# types: ["Webindex update"]
5+
workflow_dispatch: # Manually triggered via GitHub Actions UI
6+
7+
concurrency:
8+
group: redirector
9+
cancel-in-progress: false
10+
11+
jobs:
12+
13+
Webindex:
14+
15+
env:
16+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
17+
18+
name: "Generate JSON Index"
19+
runs-on: "ubuntu-24.04"
20+
steps:
21+
22+
- name: Checkout build framework repository
23+
uses: actions/checkout@v4
24+
with:
25+
repository: armbian/build
26+
fetch-depth: 1
27+
clean: false
28+
path: build
29+
30+
- name: Checkout OS repository
31+
uses: actions/checkout@v4
32+
with:
33+
repository: armbian/os
34+
fetch-depth: 1
35+
clean: false
36+
path: os
37+
38+
- name: Checkout armbian.github.io repository
39+
uses: actions/checkout@v4
40+
with:
41+
repository: armbian/armbian.github.io
42+
fetch-depth: 0
43+
clean: false
44+
path: armbian.github.io
45+
46+
- name: Install SSH key
47+
uses: shimataro/ssh-key-action@v2
48+
with:
49+
key: ${{ secrets.KEY_UPLOAD }}
50+
known_hosts: ${{ secrets.KNOWN_HOSTS_ARMBIAN_UPLOAD }}
51+
if_key_exists: replace
52+
53+
- name: "Install dependencies"
54+
uses: awalsh128/cache-apt-pkgs-action@latest
55+
with:
56+
packages: gh jc zip
57+
version: 1.0
58+
59+
60+
- name: "Build JSON file"
61+
run: |
62+
63+
# prepare feeds
64+
A=$(rsync -e "ssh -p 10023 -o StrictHostKeyChecking=accept-new" -ar [email protected]:/storage/www/dl/ | awk '{ print ""$2"|https://dl.armbian.com/"$5"|"$3"T"$4"Z" }' | grep rpi4b | grep -v "sha\|torrent\|asc" | grep "archive/" | grep -v ".txt\|homeassistant\|openhab\|kali\|omv")
65+
66+
# debug
67+
echo "$A" > a.txt
68+
69+
# join all in one file and compress
70+
for line in $A; do
71+
72+
BOARD=$(echo $line | cut -d"|" -f2 | grep -Po 'Armbian.*[0-9][0-9].[0-9].*' | grep -Po '[0-9][0-9].[0-9].*' | cut -d"_" -f2)
73+
ARMBIAN_VERSION=$(echo $line | cut -d"|" -f2 | grep -Po 'Armbian.*[0-9][0-9].[0-9].*' | grep -Po '[0-9][0-9].[0-9].*' | cut -d"_" -f1)
74+
IMAGE_SIZE=$(echo $line | cut -d"|" -f1 | sed "s/\.//g" | sed "s/\,//g")
75+
KERNEL_BRANCH=$(echo $line | cut -d"|" -f2 | grep -Po 'Armbian.*[0-9][0-9].[0-9].*' | grep -Po '[0-9][0-9].[0-9].*' | cut -d"_" -f4)
76+
IMAGE_RELEASE=$(echo $line | cut -d"|" -f2 | grep -Po 'Armbian.*[0-9][0-9].[0-9].*' | grep -Po '[0-9][0-9].[0-9].*' | cut -d"_" -f3)
77+
IMAGE_URL=$(echo $line | cut -d"|" -f2)
78+
79+
# Release
80+
if [[ "$IMAGE_RELEASE" =~ ^(jammy|noble|plucky)$ ]]; then
81+
RELEASE="Ubuntu"
82+
else
83+
RELEASE="Debian"
84+
fi
85+
86+
# workarounds
87+
STEP_A=1
88+
STEP_B=2
89+
[[ $IMAGE_URL == *i3-wm* || $IMAGE_URL == *kde-* || $IMAGE_URL == *-rc* ]] && STEP_A=2 && STEP_B=3
90+
IMAGE_TARGET=$(echo $IMAGE_URL | cut -d"|" -f2 | grep "minimal\|desktop" | cut -d"|" -f2 | grep -Po 'Armbian.*[0-9][0-9].[0-9].*' | grep -Po '[0-9][0-9].[0-9].*' | cut -d"_" -f4- | grep -Po '_[a-z].*' | cut -d"." -f1 | sed "s/_//" | sed "s/_desktop//" | sed "s/-kisak//" | sed "s/-backported-mesa//" | cut -d"-" -f1,${STEP_A})
91+
IMAGE_EXTENSION=$(echo $IMAGE_URL | cut -d"|" -f2 | cut -d"|" -f2 | grep -Po 'Armbian.*[0-9][0-9].[0-9].*' | grep -Po '[0-9][0-9].[0-9].*' | sed 's/_sm8250-xiaomi-umi\|_sm8250-xiaomi-elish//g' | sed "s/rc[0-9]//g" | cut -d"_" -f4- | cut -d"-" -f${STEP_B}- | cut -d"_" -f1 | cut -d"." -f1)
92+
[[ $IMAGE_EXTENSION == $KERNEL_BRANCH || $IMAGE_EXTENSION == ${IMAGE_TARGET} || $IMAGE_EXTENSION =~ boot|csot|boe|sms ]] && unset IMAGE_EXTENSION
93+
[[ -z ${IMAGE_TARGET} ]] && IMAGE_TARGET="server"
94+
FILE_EXTENSION=$(echo $IMAGE_URL | cut -d"|" -f2 | cut -d"|" -f2 | grep -Po 'Armbian.*[0-9][0-9].[0-9].*' | grep -Po '[0-9][0-9].[0-9].*' | sed 's/_sm8250-xiaomi-umi\|_sm8250-xiaomi-elish//g' | sed "s/-rc[0-9]//g" | rev | cut -d"_" -f1 | rev | sed 's/.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\)//' | sed "s/desktop.\|minimal.//")
95+
#FILE_EXTENSION=$(echo $IMAGE_URL | grep -o "oowow.*\|img.*")
96+
97+
# Clean out application from extension
98+
FILE_EXTENSION=$(echo $FILE_EXTENSION | sed 's/.*-'$IMAGE_EXTENSION'//g' | sed -e 's/^\.//g')
99+
100+
# Extract extensions for weird type of images
101+
WEIRD_EXT=$(echo $FILE_EXTENSION | sed "s/img//g" | sed "s/^\.//g" | sed "s/\..*//g" | sed "s/xz//g" | sed "s/oowow//g")
102+
103+
IMAGE_TYPE=$(echo $IMAGE_URL | cut -d"/" -f5)
104+
IMAGE_CREATED=$(echo $line | cut -d"|" -f3 | sed "s/\//-/g")
105+
EXPOSED=false
106+
# Assemble redirector link
107+
PREFIX=""
108+
[[ "${IMAGE_TYPE}" == "os" ]] && PREFIX="nightly/"
109+
REDI_EXT=$(echo $FILE_EXTENSION | rev | cut -d"." -f1 | rev | sed "s/xz//g")
110+
REDI_URL="https://dl.armbian.com/${PREFIX}${BOARD,,}/${IMAGE_RELEASE^}_${KERNEL_BRANCH}${IMAGE_TARGET:+_$IMAGE_TARGET}${IMAGE_EXTENSION:+-$IMAGE_EXTENSION}${WEIRD_EXT:+-$WEIRD_EXT}${REDI_EXT:+.$REDI_EXT}"
111+
112+
# Download, unpack, make sha
113+
wget $IMAGE_URL
114+
FILENAME=$(echo $IMAGE_URL | rev | cut -d"/" -f1 | rev)
115+
FILENAME_FINAL=${FILENAME/.xz/}
116+
xz -d $FILENAME
117+
extract_size=$(stat -c%s $FILENAME_FINAL)
118+
extract_sha256=$(sha256sum $FILENAME_FINAL | cut -d" " -f1)
119+
rm $FILENAME_FINAL
120+
121+
image_download_sha256=$(wget -qO- "${REDI_URL}.sha" | cut -d" " -f1)
122+
echo "Armbian OS $IMAGE_RELEASE $IMAGE_TARGET $ARMBIAN_VERSION|Ultralight custom $RELEASE OS for single board computers|$IMAGE_URL|https://www.armbian.com/armbian-logo-40x40.png|https://www.armbian.com|${IMAGE_CREATED:0:10}|$extract_size|$extract_sha256|$IMAGE_SIZE|$image_download_sha256||systemd"
123+
124+
done | sed '1s/^/"name"|"description"|"url"|"icon"|"website"|"release_date"|"extract_size"|"extract_sha256"|"image_download_size"|"image_download_sha256"|"devices"|"init_format"\n/' | jc --csv | jq '{"os_list": ([.[] | .devices = ["pi5-64bit", "pi4-64bit", "pi3-64bit"]])}' > rpi-imager.json
125+
126+
- name: Commit changes if any
127+
run: |
128+
129+
cd armbian.github.io
130+
git checkout data
131+
mkdir -p data/
132+
133+
cp ${{ github.workspace }}/rpi-imager.json data/
134+
135+
git config --global user.name "github-actions"
136+
git config --global user.email "[email protected]"
137+
git add data/.
138+
git diff --cached --quiet || git commit -m "Update WEB indes files"
139+
git push

0 commit comments

Comments
 (0)