publish some update scripts

This commit is contained in:
EV21 committed 2022-03-25 14:42:56 +01:00
1 parent 5659c3865b
commit c5d1c7ae23
5 files changed
+288

No files matched your search

+100
View File
@@ -0,0 +1,100 @@
#!/usr/bin/env bash
APP_NAME=Gitea
GITEA_LOCATION=$HOME/gitea/gitea
TMP_LOCATION=$HOME/tmp
GPG_KEY_FINGERPRINT=7C9E68152594688862D62AF62D9AE806EC1592E2
ORG=go-gitea # Organisation or GitHub user
REPO=gitea
GITHUB_API_URL=https://api.github.com/repos/$ORG/$REPO/releases/latest
function do_update_procedure
{
$GITEA_LOCATION manager flush-queues
supervisorctl stop gitea
wget --quiet --progress=bar:force --output-document "$TMP_LOCATION"/gitea "$DOWNLOAD_URL"
verify_file
supervisorctl stop gitea
mv --verbose "$TMP_LOCATION"/gitea "$GITEA_LOCATION"
chmod u+x --verbose "$GITEA_LOCATION"
supervisorctl start gitea
supervisorctl status gitea
}
function get_local_version
{
LOCAL_VERSION=$($GITEA_LOCATION --version |
awk '{print $3}')
}
function get_latest_version
{
curl --silent $GITHUB_API_URL > "$TMP_LOCATION"/github_api_response.json
TAG_NAME=$(jq --raw-output '.tag_name' "$TMP_LOCATION"/github_api_response.json)
LATEST_VERSION=${TAG_NAME:1}
DOWNLOAD_URL=$(jq --raw-output '.assets[].browser_download_url' "$TMP_LOCATION"/github_api_response.json |
grep --max-count=1 "linux-amd64")
}
function get_signature_file
{
SIGNATURE_FILE_URL=$(jq --raw-output '.assets[].browser_download_url' "$TMP_LOCATION"/github_api_response.json |
grep "linux-amd64.asc")
rm "$TMP_LOCATION"/github_api_response.json
wget --quiet --progress=bar:force --output-document "$TMP_LOCATION"/gitea.asc "$SIGNATURE_FILE_URL"
}
function verify_file
{
get_signature_file
## downloading public key if it does not already exist
if ! gpg --fingerprint $GPG_KEY_FINGERPRINT
then
## currently the key download via gpg does not work on Uberspace
#gpg --keyserver keys.openpgp.org --recv $GPG_KEY_FINGERPRINT
curl --silent https://keys.openpgp.org/vks/v1/by-fingerprint/$GPG_KEY_FINGERPRINT | gpg --import
fi
if ! gpg --export-ownertrust | grep --quiet $GPG_KEY_FINGERPRINT:6:
then echo "$GPG_KEY_FINGERPRINT:6:" | gpg --import-ownertrust
fi
if gpg --verify "$TMP_LOCATION"/gitea.asc "$TMP_LOCATION"/gitea
then rm "$TMP_LOCATION"/gitea.asc; return 0
else echo "gpg verification results in a BAD signature"; exit 1
echo "$GPG_KEY_FINGERPRINT:6:" | gpg --import-ownertrust
fi
}
## this is a helper function to compare two versions as a "lower than" operator
function version_lt
{
test "$(echo "$@" |
tr " " "n" |
sort --version-sort --reverse |
head --lines=1)" != "$1"
}
function main
{
get_local_version
get_latest_version
if [ "$LOCAL_VERSION" = "$LATEST_VERSION" ]
then
echo "Your $APP_NAME is already up to date."
echo "You are running $APP_NAME $LOCAL_VERSION"
else
if version_lt "$LOCAL_VERSION" "$LATEST_VERSION"
then
echo "There is a new version available."
echo "Doing update from $LOCAL_VERSION to $LATEST_VERSION"
do_update_procedure
fi
fi
}
main "$@"
exit $?
+28
View File
@@ -0,0 +1,28 @@
#!/usr/bin/env bash
APP=grocy
ORG=grocy # Organisation or GitHub user
REPO=grocy
LOCAL_VERSION=$(jq --raw-output .Version /var/www/virtual/"$USER"/grocy/version.json)
TAG_NAME=$(curl -s https://api.github.com/repos/$ORG/$REPO/releases/latest | jq --raw-output .tag_name)
LATEST_VERSION=${TAG_NAME:1} # It is common to use the prefix v for the version tag.
## this is a helper function to compare two versions as a "lower than" operator
function version_lt
{
test "$(echo "$@" |
tr " " "n" |
sort --version-sort --reverse |
head --lines=1)" != "$1"
}
if [ "$LOCAL_VERSION" = "$LATEST_VERSION" ]; then
echo "Your $APP is running on $LOCAL_VERSION and it is already up to date."
else
if version_lt "$LOCAL_VERSION" "$LATEST_VERSION"
then
echo "There is a new Version available of $ORG"
echo "The latest Version is $LATEST_VERSION"
echo "Your local Version is $LOCAL_VERSION"
bash /var/www/virtual/"$USER"/grocy/update.sh
fi
fi
+77
View File
@@ -0,0 +1,77 @@
#!/usr/bin/env bash
APP_NAME=HedgeDoc
ORG=hedgedoc # Organisation or GitHub user
REPO=hedgedoc
LOCAL_VERSION=$(jq --raw-output .version ~/hedgedoc/package.json)
LATEST_VERSION=$(curl --silent https://api.github.com/repos/$ORG/$REPO/releases/latest |
jq --raw-output .tag_name)
function do_upgrade() {
supervisorctl stop $APP_NAME
echo "waiting 1 minute until all processes are stopped"
sleep 1m
mv --verbose ~/hedgedoc ~/hedgedoc_"$LOCAL_VERSION"
VERSION=$LATEST_VERSION
cd || exit
wget https://github.com/hedgedoc/hedgedoc/releases/download/"$VERSION"/hedgedoc-"$VERSION".tar.gz
tar --extract --gzip --file=hedgedoc-"$VERSION".tar.gz
rm --verbose hedgedoc-"$VERSION".tar.gz
cp --verbose hedgedoc_"$LOCAL_VERSION"/config.json hedgedoc/config.json
cd ~/hedgedoc || exit
bin/setup
echo "You may need to wait a minute until HedgeDoc is up and running."
supervisorctl start $APP_NAME
echo "If everything works fine you can delete ~/hedgedoc_$USED_VERSION"
echo "Please consider that there might be uploaded files in ~/hedgedoc_$LOCAL_VERSION/public/uploads which were not migrated to the new version if you are using the default setting."
rm --recursive ~/hedgedoc_"$LOCAL_VERSION"
}
function yes-no_question
{
local question=$1
while true
do
read -r -p "$question (Y/n) " ANSWER
if [ "$ANSWER" = "" ]
then ANSWER='Y'
fi
case $ANSWER in
[Yy]* | [Jj]* )
return 0 ;;
[Nn]* )
return 1 ;;
* ) echo "Please answer yes or no." ;;
esac
done
}
## this is a helper function to compare two versions as a "lower than" operator
function version_lt
{
test "$(echo "$@" |
tr " " "n" |
sort --version-sort --reverse |
head --lines=1)" != "$1"
}
function main
{
if [ "$LOCAL_VERSION" = "$LATEST_VERSION" ]
then echo "Your HedgeDoc is already up to date."
elif version_lt "$LOCAL_VERSION" "$LATEST_VERSION"
then
echo "There is a new Version available of $APP_NAME"
echo "The latest Version is $LATEST_VERSION"
echo "Your local Version is $LOCAL_VERSION"
echo "Upgrades to next major releases are not tested."
echo "Please read the release notes."
echo "Also check if the upgrade instructions have changed."
echo "Your instance might break."
if yes-no_question "Do you wish to proceed with the upgrade?"
then do_upgrade
fi
fi
}
main "$@"
exit $?
+23
View File
@@ -0,0 +1,23 @@
#!/usr/bin/env bash
APP_LOCATION=$HOME/html
## Updater automatically works in maintenance:mode.
## Use the Uberspace backup system for files and database if you need to roll back.
## The Nextcloud updater creates backups only to safe base and app code data and config files
## so it takes ressources you might need for your productive data.
## Deactivate NC-updater Backups with --no-backup
php "$APP_LOCATION"/updater/updater.phar --no-backup --no-interaction
## database optimisations
php "$APP_LOCATION"/occ db:add-missing-primary-keys --no-interaction
php "$APP_LOCATION"/occ db:add-missing-columns --no-interaction
php "$APP_LOCATION"/occ db:add-missing-indices --no-interaction
php "$APP_LOCATION"/occ db:convert-filecache-bigint --no-interaction
php "$APP_LOCATION"/occ app:update --all
/usr/sbin/restorecon -R "$APP_LOCATION"
if test -f ~/etc/services.d/notify_push.ini
then supervisorctl restart notify_push
fi
+60
View File
@@ -0,0 +1,60 @@
#!/usr/bin/env bash
APP_NAME="Uptime Kuma"
ORG=louislam # Organisation or GitHub user
REPO=uptime-kuma
GITHUB_API_URL=https://api.github.com/repos/$ORG/$REPO/releases/latest
function get_local_version
{
LOCAL_VERSION=$(git describe --tags)
}
function get_latest_version
{
LATEST_VERSION=$(curl --silent $GITHUB_API_URL |
jq --raw-output .tag_name)
}
function do_update_procedure
{
git fetch --all
git checkout "$LATEST_VERSION" --force
npm ci --production
npm run download-dist
supervisorctl restart uptime-kuma
sleep 3
supervisorctl status
}
## this is a helper function to compare two versions as a "lower than" operator
function version_lt
{
test "$(echo "$@" |
tr " " "n" |
sort --version-sort --reverse |
head --lines=1)" != "$1"
}
function main
{
cd ~/uptime-kuma || exit 1
get_local_version
get_latest_version
if [ "$LOCAL_VERSION" = "$LATEST_VERSION" ]
then
echo "Your $APP_NAME is already up to date."
echo "You are running $APP_NAME $LOCAL_VERSION"
else
if version_lt "$LOCAL_VERSION" "$LATEST_VERSION"
then
echo "There is a new version available."
echo "Doing update from $LOCAL_VERSION to $LATEST_VERSION"
do_update_procedure
fi
fi
}
main "${@}"
exit $?