tvl-depot/tools/gerrit-update.nix

35 lines
975 B
Nix
Raw Normal View History

# Utility script to perform a Gerrit update.
{ pkgs, ... }:
pkgs.writeShellScriptBin "gerrit-update" ''
set -euo pipefail
if [[ $EUID -ne 0 ]]; then
echo "Oh no! Only root is allowed to update Gerrit!" >&2
exit 1
fi
gerrit_war="$(find "${pkgs.gerrit}/webapps" -name 'gerrit*.war')"
java="${pkgs.jdk}/bin/java"
backup_path="/root/gerrit_preupgrade-$(date +"%Y-%m-%d").tar.bz2"
# Take a safety backup of Gerrit into /root's homedir. Just in case.
echo "Backing up Gerrit to $backup_path"
tar -cjf "$backup_path" /var/lib/gerrit
# Stop Gerrit (and its activation socket).
echo "Stopping Gerrit"
systemctl stop gerrit.service gerrit.socket
# Ask Gerrit to do a schema upgrade...
echo "Performing schema upgrade"
"$java" -jar "$gerrit_war" \
init --no-auto-start --batch --skip-plugins --site-path "/var/lib/gerrit"
# Restart Gerrit.
echo "Restarting Gerrit"
systemctl start gerrit.socket gerrit.service
echo "...done"
''