From a78e6031a0f2793935bcd7970c0ff07d917bed85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Tille?= Date: Tue, 27 Feb 2024 21:28:19 +0100 Subject: [PATCH] Add auto update scripts --- .gitignore | 3 + auto_update/auto_update.sh | 167 ++++++++++++++++++++++ auto_update/auto_update_config_example.sh | 24 ++++ 3 files changed, 194 insertions(+) create mode 100644 auto_update/auto_update.sh create mode 100644 auto_update/auto_update_config_example.sh diff --git a/.gitignore b/.gitignore index ec660e7..4c3f96c 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,6 @@ *swp +auto_update_config.sh +auto_update/Synapse_build_*.log +auto_update/synapse_build_temp.log diff --git a/auto_update/auto_update.sh b/auto_update/auto_update.sh new file mode 100644 index 0000000..540cb44 --- /dev/null +++ b/auto_update/auto_update.sh @@ -0,0 +1,167 @@ +#!/bin/bash + +set -eu + +source auto_update_config.sh + +readonly debian_version_name_1="bookworm" +readonly debian_version_name_2="bullseye" + +get_from_manifest() { + result=$(python3 <&1 | tee "synapse_build_temp.log" + return ${PIPESTATUS[0]} +} + +push_armv7_build() { + ## Make a draft release json with a markdown body + local release='"tag_name": "v'$synapse_version'", "target_commitish": "master", "name": "v'$synapse_version'", ' + local body="Synapse prebuilt bin for synapse_ynh\\n=========\\nPlease refer to upstream project for the change : https://github.com/element-hq/synapse/releases\\n\\nSha256sum for $debian_version_name_1 : $(cat $build_result_path_deb_1/SUM_matrix-synapse_${synapse_version}-$debian_version_name_1-bin1_armv7l.tar.gz)\\nSha256sum for $debian_version_name_2 : $(cat $build_result_path_deb_2/SUM_matrix-synapse_${synapse_version}-$debian_version_name_2-bin1_armv7l.tar.gz)" + release+='"body": "'$body'",' + release+='"draft": true, "prerelease": false' + release='{'$release'}' + local url="https://api.github.com/repos/$owner/$repo/releases" + local succ=$(curl -H "Authorization: token $perstok" --data "$release" $url) + + ## In case of success, we upload a file + local upload_generic=$(echo "$succ" | grep upload_url) + if [[ $? -eq 0 ]]; then + echo "Release created." + else + echo "Error creating release!" + return 1 + fi + + local upload_prefix + local upload_file + local upload_ok + local download + for archive_name in $build_result_path_deb_1/${result_prefix_name_deb_1}-bin1_armv7l.tar.gz \ + $build_result_path_deb_2/${result_prefix_name_deb_2}-bin1_armv7l.tar.gz + do + + # $upload_generic is like: + # "upload_url": "https://uploads.github.com/repos/:owner/:repo/releases/:ID/assets{?name,label}", + upload_prefix=$(echo $upload_generic | cut -d "\"" -f4 | cut -d "{" -f1) + upload_file="$upload_prefix?name=${archive_name##*/}" + + echo "Start uploading file" + i=0 + upload_ok=false + while [ $i -le 4 ]; do + i=$((i+1)) + # Download file + set +e + succ=$(curl -H "Authorization: token $perstok" \ + -H "Content-Type: $(file -b --mime-type $archive_name)" \ + -H "Accept: application/vnd.github.v3+json" \ + --data-binary @$archive_name $upload_file) + res=$? + set -e + if [ $res -ne 0 ]; then + echo "Curl upload failled" + continue + fi + echo "Upload done, check result" + + set +eu + download=$(echo "$succ" | egrep -o "browser_download_url.+?") + res=$? + if [ $res -ne 0 ] || [ -z "$download" ]; then + set -eu + echo "Result upload error" + continue + fi + set -eu + echo "$download" | cut -d: -f2,3 | cut -d\" -f2 + echo "Upload OK" + upload_ok=true + break + done + + if ! $upload_ok; then + echo "Upload completely failed, exit" + return 1 + fi + done +} + +synapse_version=$(get_from_manifest ".version" | cut -d'~' -f1) + +if check_synapse +then + set +eu + upgrade_synapse + res=$? + set -eu + if [ $res -eq 0 ]; then + result="Success" + else + result="Failed" + fi + msg="Build: synapse version $synapse_version\n" + msg+="$(cat synapse_build_temp.log)" + echo -e "$msg" | mail.mailutils -a "Content-Type: text/plain; charset=UTF-8" -s "Autoupgrade synapse : $result" "$notify_email" +fi diff --git a/auto_update/auto_update_config_example.sh b/auto_update/auto_update_config_example.sh new file mode 100644 index 0000000..88a926d --- /dev/null +++ b/auto_update/auto_update_config_example.sh @@ -0,0 +1,24 @@ + +build_cmd_deb_1() { + pushd ~ + sudo /root/build_synapse_bin.sh $1 $2 --chroot-yes + popd + sudo chown app_upgrader ~/$2* +} +build_cmd_deb_2() { + local target_dir=~ + sudo chroot /mnt/bookworm_build /root/build_synapse_bin.sh $1 $2 --chroot-yes + sudo mv -t $target_dir /mnt/bookworm_build/$2* + sudo chown app_upgrader $target_dir/$2* +} + + +build_result_path_deb_1=~ +build_result_path_deb_2=~ + +notify_email="hello@world.tld" + +# For github arm release +owner="YunoHost-Apps" +repo="synapse_python_build" +perstok="kkk"