Voici un script qui permet de mettre à jour Gogs, un serveur Git parfait à installer chez soi, en l'occurrence sur un Rapsberry Pi 2.

#!/bin/bash -e
#
# https://gogs.io/docs/upgrade/upgrade_from_binary
#

usage() {
    echo "À exécuter en tant que root !"
    echo "$0 VERSION"
    echo "$0 0.13.0"
    exit 1
}

main() {
    local new_version="$1"
    local fname="gogs_${new_version}_linux_armv7.zip"
    local output="${fname}-${new_version}"
    local url="https://github.com/gogs/gogs/releases/download/v${new_version}/${fname}"
    local today="$(/bin/date '+%Y-%m-%d_%H')"
    local su="/bin/su - git -c"

    cd /home/git
    /usr/sbin/service gogs stop
    $su "/usr/bin/wget ${url} -O ${output}"
    [ -d gogs ] && $su "/bin/mv gogs gogs_${today}"
    $su "/usr/bin/unzip ${output}"
    $su "/bin/cp -Rv gogs_${today}/custom gogs"
    $su "/bin/cp -Rv gogs_${today}/data gogs"
    $su "/bin/cp -Rv gogs_${today}/log gogs"
    /usr/sbin/service gogs start
}

[ $EUID -eq 0 ] || usage
[ -z "$1" ] && usage

main "$@"

À utiliser tel que :

$ ./update-gogs.sh "0.13.0"

Historique

  • 2023-02-25 : Téléchargement de l'archive ZIP depuis GitHub au lieu de dl.gogs.io.
  • 2021-04-10 : MàJ du script pour prendre en compte les versions 0.12.0+.
  • 2018-08-17 : Correction [ -n $EUID ][ $EUID -eq 0 ] et de la variable today qui ajoutait un "M" à la fin, utilisation de bash au lieu de sh.
  • 2018-04-28 : MàJ du script pour prendre en compte les versions 0.11.43+.
  • 2017-04-08 : MàJ des liens et meilleure qualité de script.
  • 2016-04-16 : Utilisation des chemins absolus des exécutables.