55 workflow_dispatch : # Manually triggered via GitHub Actions UI
66
77concurrency :
8- group : redirector
8+ group : rpi-imager-json-update
99 cancel-in-progress : false
1010
1111jobs :
2020 if : ${{ github.repository_owner == 'Armbian' }}
2121 permissions :
2222 contents : write
23+ timeout-minutes : 180
2324 steps :
2425
25- - name : Checkout build framework repository
26- uses : actions/checkout@v6
27- with :
28- repository : armbian/build
29- fetch-depth : 1
30- clean : false
31- path : build
32-
33- - name : Checkout OS repository
34- uses : actions/checkout@v6
35- with :
36- repository : armbian/os
37- fetch-depth : 1
38- clean : false
39- path : os
40-
4126 - name : Checkout armbian.github.io repository
4227 uses : actions/checkout@v6
4328 with :
@@ -46,91 +31,23 @@ jobs:
4631 clean : false
4732 path : armbian.github.io
4833
49- - name : Install SSH key
50- uses : shimataro/ssh-key-action@v2
51- with :
52- key : ${{ secrets.KEY_UPLOAD }}
53- known_hosts : ${{ secrets.KNOWN_HOSTS_ARMBIAN_UPLOAD }}
54- if_key_exists : replace
55-
5634 - name : " Install dependencies"
5735 uses : awalsh128/cache-apt-pkgs-action@latest
5836 with :
59- packages : gh jc zip
37+ packages : python3-requests xz-utils
6038 version : 1.0
6139
6240
6341 - name : " Build JSON file"
6442 run : |
65-
66- # prepare feeds
67- A=$(rsync -e "ssh -p 10023 -o StrictHostKeyChecking=accept-new" -ar upload@k-space.ee.armbian.com:/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")
68-
69- # debug
70- echo "$A" > a.txt
71-
72- # join all in one file and compress
73- for line in $A; do
74-
75- 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)
76- 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)
77- IMAGE_SIZE=$(echo $line | cut -d"|" -f1 | sed "s/\.//g" | sed "s/\,//g")
78- 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)
79- 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)
80- IMAGE_URL=$(echo $line | cut -d"|" -f2)
81-
82- # Release
83- if [[ "$IMAGE_RELEASE" =~ ^(jammy|noble|plucky)$ ]]; then
84- RELEASE="Ubuntu"
85- else
86- RELEASE="Debian"
87- fi
88-
89- # workarounds
90- STEP_A=1
91- STEP_B=2
92- [[ $IMAGE_URL == *i3-wm* || $IMAGE_URL == *kde-* || $IMAGE_URL == *-rc* ]] && STEP_A=2 && STEP_B=3
93- 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})
94- 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)
95- [[ $IMAGE_EXTENSION == $KERNEL_BRANCH || $IMAGE_EXTENSION == ${IMAGE_TARGET} || $IMAGE_EXTENSION =~ boot|csot|boe|sms ]] && unset IMAGE_EXTENSION
96- [[ -z ${IMAGE_TARGET} ]] && IMAGE_TARGET="server"
97- 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.//")
98- #FILE_EXTENSION=$(echo $IMAGE_URL | grep -o "oowow.*\|img.*")
99-
100- # Clean out application from extension
101- FILE_EXTENSION=$(echo $FILE_EXTENSION | sed 's/.*-'$IMAGE_EXTENSION'//g' | sed -e 's/^\.//g')
102-
103- # Extract extensions for weird type of images
104- WEIRD_EXT=$(echo $FILE_EXTENSION | sed "s/img//g" | sed "s/^\.//g" | sed "s/\..*//g" | sed "s/xz//g" | sed "s/oowow//g")
105-
106- IMAGE_TYPE=$(echo $IMAGE_URL | cut -d"/" -f5)
107- IMAGE_CREATED=$(echo $line | cut -d"|" -f3 | sed "s/\//-/g")
108- EXPOSED=false
109- # Assemble redirector link
110- PREFIX=""
111- [[ "${IMAGE_TYPE}" == "os" ]] && PREFIX="nightly/"
112- REDI_EXT=$(echo $FILE_EXTENSION | rev | cut -d"." -f1 | rev | sed "s/xz//g")
113- 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}"
114-
115- # Download, unpack, make sha
116- wget $IMAGE_URL
117- FILENAME=$(echo $IMAGE_URL | rev | cut -d"/" -f1 | rev)
118- FILENAME_FINAL=${FILENAME/.xz/}
119- xz -d $FILENAME
120- extract_size=$(stat -c%s $FILENAME_FINAL)
121- extract_sha256=$(sha256sum $FILENAME_FINAL | cut -d" " -f1)
122- rm $FILENAME_FINAL
123-
124- image_download_sha256=$(wget -qO- "${REDI_URL}.sha" | cut -d" " -f1)
125- 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"
126-
127- 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"]])}' | jq '.os_list.[].image_download_size |= tonumber' | jq '.os_list.[].extract_size |= tonumber' > rpi-imager.json
43+ python3 ${{ github.workspace }}/armbian.github.io/scripts/generate-rpi-imager-json.py \
44+ --output "${{ github.workspace }}/rpi-imager.json"
12845
12946 - name : Commit changes if any
13047 run : |
13148
13249 cd armbian.github.io
133- git checkout data
50+ git checkout data || git checkout -b data
13451 mkdir -p data/
13552
13653 cp ${{ github.workspace }}/rpi-imager.json data/
0 commit comments