diff --git a/contrib/upgrade.sh b/contrib/upgrade.sh index 3a98c277d6..9d71b2a13a 100755 --- a/contrib/upgrade.sh +++ b/contrib/upgrade.sh @@ -1,33 +1,33 @@ #!/usr/bin/env bash -# This is an update script for gitea installed via the binary distribution -# from dl.gitea.io on linux as systemd service. It performs a backup and updates -# Gitea in place. -# NOTE: This adds the GPG Signing Key of the Gitea maintainers to the keyring. +# This is an update script for forgejo installed via the binary distribution +# from codeberg.org/forgejo/forgejo on linux as systemd service. It +# performs a backup and updates Forgejo in place. +# NOTE: This adds the GPG Signing Key of the Forgejo maintainers to the keyring. # Depends on: bash, curl, xz, sha256sum. optionally jq, gpg # See section below for available environment vars. # When no version is specified, updates to the latest release. # Examples: # upgrade.sh 1.15.10 -# giteahome=/opt/gitea giteaconf=$giteahome/app.ini upgrade.sh +# forgejohome=/opt/forgejo forgejoconf=$forgejohome/app.ini upgrade.sh # apply variables from environment -: "${giteabin:="/usr/local/bin/gitea"}" -: "${giteahome:="/var/lib/gitea"}" -: "${giteaconf:="/etc/gitea/app.ini"}" -: "${giteauser:="git"}" +: "${forgejobin:="/usr/local/bin/forgejo"}" +: "${forgejohome:="/var/lib/forgejo"}" +: "${forgejoconf:="/etc/forgejo/app.ini"}" +: "${forgejouser:="git"}" : "${sudocmd:="sudo"}" : "${arch:="linux-amd64"}" -: "${service_start:="$sudocmd systemctl start gitea"}" -: "${service_stop:="$sudocmd systemctl stop gitea"}" -: "${service_status:="$sudocmd systemctl status gitea"}" -: "${backupopts:=""}" # see `gitea dump --help` for available options +: "${service_start:="$sudocmd systemctl start forgejo"}" +: "${service_stop:="$sudocmd systemctl stop forgejo"}" +: "${service_status:="$sudocmd systemctl status forgejo"}" +: "${backupopts:=""}" # see `forgejo dump --help` for available options -function giteacmd { +function forgejocmd { if [[ $sudocmd = "su" ]]; then # `-c` only accept one string as argument. - "$sudocmd" - "$giteauser" -c "$(printf "%q " "$giteabin" "--config" "$giteaconf" "--work-path" "$giteahome" "$@")" + "$sudocmd" - "$forgejouser" -c "$(printf "%q " "$forgejobin" "--config" "$forgejoconf" "--work-path" "$forgejohome" "$@")" else - "$sudocmd" --user "$giteauser" "$giteabin" --config "$giteaconf" --work-path "$giteahome" "$@" + "$sudocmd" --user "$forgejouser" "$forgejobin" --config "$forgejoconf" --work-path "$forgejohome" "$@" fi } @@ -40,7 +40,7 @@ function require { # parse command line arguments while true; do case "$1" in - -v | --version ) giteaversion="$2"; shift 2 ;; + -v | --version ) forgejoversion="$2"; shift 2 ;; -y | --yes ) no_confirm="yes"; shift ;; --ignore-gpg) ignore_gpg="yes"; shift ;; "" | -- ) shift; break ;; @@ -56,9 +56,9 @@ if [[ -f /etc/os-release ]]; then if [[ "$os_release" =~ "OpenWrt" ]]; then sudocmd="su" - service_start="/etc/init.d/gitea start" - service_stop="/etc/init.d/gitea stop" - service_status="/etc/init.d/gitea status" + service_start="/etc/init.d/forgejo start" + service_stop="/etc/init.d/forgejo stop" + service_status="/etc/init.d/forgejo status" else require systemctl fi @@ -67,31 +67,31 @@ fi require curl xz sha256sum "$sudocmd" # select version to install -if [[ -z "${giteaversion:-}" ]]; then +if [[ -z "${forgejoversion:-}" ]]; then require jq - giteaversion=$(curl --connect-timeout 10 -sL https://dl.gitea.io/gitea/version.json | jq -r .latest.version) - echo "Latest available version is $giteaversion" + forgejoversion=$(curl --connect-timeout 10 -sL 'https://codeberg.org/api/v1/repos/forgejo/forgejo/releases?draft=false&pre-release=false&limit=1' -H 'accept: application/json' | jq -r '.[0].tag_name | sub("v"; "")') + echo "Latest available version is $forgejoversion" fi # confirm update echo "Checking currently installed version..." -current=$(giteacmd --version | cut -d ' ' -f 3) -[[ "$current" == "$giteaversion" ]] && echo "$current is already installed, stopping." && exit 1 +current=$(forgejocmd --version | cut -d ' ' -f 3) +[[ "$current" == "$forgejoversion" ]] && echo "$current is already installed, stopping." && exit 1 if [[ -z "${no_confirm:-}" ]]; then - echo "Make sure to read the changelog first: https://github.com/go-gitea/gitea/blob/main/CHANGELOG.md" - echo "Are you ready to update Gitea from ${current} to ${giteaversion}? (y/N)" + echo "Make sure to read the changelog first: https://codeberg.org/forgejo/forgejo/src/branch/forgejo/CHANGELOG.md" + echo "Are you ready to update forgejo from ${current} to ${forgejoversion}? (y/N)" read -r confirm [[ "$confirm" == "y" ]] || [[ "$confirm" == "Y" ]] || exit 1 fi -echo "Upgrading gitea from $current to $giteaversion ..." +echo "Upgrading forgejo from $current to $forgejoversion ..." pushd "$(pwd)" &>/dev/null -cd "$giteahome" # needed for gitea dump later +cd "$forgejohome" # needed for forgejo dump later # download new binary -binname="gitea-${giteaversion}-${arch}" -binurl="https://dl.gitea.io/gitea/${giteaversion}/${binname}.xz" +binname="forgejo-${forgejoversion}-${arch}" +binurl="https://codeberg.org/forgejo/forgejo/releases/download/v${forgejoversion}/${binname}.xz" echo "Downloading $binurl..." curl --connect-timeout 10 --silent --show-error --fail --location -O "$binurl{,.sha256,.asc}" @@ -99,28 +99,28 @@ curl --connect-timeout 10 --silent --show-error --fail --location -O "$binurl{,. sha256sum -c "${binname}.xz.sha256" if [[ -z "${ignore_gpg:-}" ]]; then require gpg - gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2 + gpg --keyserver keys.openpgp.org --recv EB114F5E6C0DC2BCDD183550A4B61A2DC5923710 gpg --verify "${binname}.xz.asc" "${binname}.xz" || { echo 'Signature does not match'; exit 1; } fi rm "${binname}".xz.{sha256,asc} # unpack binary + make executable xz --decompress --force "${binname}.xz" -chown "$giteauser" "$binname" +chown "$forgejouser" "$binname" chmod +x "$binname" -# stop gitea, create backup, replace binary, restart gitea -echo "Flushing gitea queues at $(date)" -giteacmd manager flush-queues -echo "Stopping gitea at $(date)" +# stop forgejo, create backup, replace binary, restart forgejo +echo "Flushing forgejo queues at $(date)" +forgejocmd manager flush-queues +echo "Stopping forgejo at $(date)" $service_stop -echo "Creating backup in $giteahome" -giteacmd dump $backupopts -echo "Updating binary at $giteabin" -cp -f "$giteabin" "$giteabin.bak" && mv -f "$binname" "$giteabin" +echo "Creating backup in $forgejohome" +forgejocmd dump $backupopts +echo "Updating binary at $forgejobin" +cp -f "$forgejobin" "$forgejobin.bak" && mv -f "$binname" "$forgejobin" $service_start $service_status -echo "Upgrade to $giteaversion successful!" +echo "Upgrade to $forgejoversion successful!" popd