35 lines
975 B
Nix
35 lines
975 B
Nix
|
# 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"
|
||
|
''
|