mirror of
https://github.com/YunoHost-Apps/mattermost_ynh.git
synced 2024-09-03 19:36:29 +02:00
f8589544d5
The release notes of the 5.38.0 version mention two lengthy database migrations. Make sure users are told what is going on, so that they don't think the upgrade failed.
217 lines
7.1 KiB
Bash
217 lines
7.1 KiB
Bash
#!/bin/bash
|
|
|
|
#=================================================
|
|
# GENERIC START
|
|
#=================================================
|
|
# IMPORT GENERIC HELPERS
|
|
#=================================================
|
|
|
|
source _common.sh
|
|
source /usr/share/yunohost/helpers
|
|
|
|
#=================================================
|
|
# MANAGE SCRIPT FAILURE
|
|
#=================================================
|
|
|
|
ynh_clean_setup () {
|
|
ynh_clean_check_starting
|
|
}
|
|
# Exit if an error occurs during the execution of the script
|
|
ynh_abort_if_errors
|
|
|
|
#=================================================
|
|
# LOAD SETTINGS
|
|
#=================================================
|
|
ynh_script_progression --message="Loading installation settings..." --weight=2
|
|
|
|
app=$YNH_APP_INSTANCE_NAME
|
|
|
|
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
|
path_url=$(ynh_app_setting_get --app=$app --key=path)
|
|
port=$(ynh_app_setting_get --app=$app --key=port)
|
|
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
|
language=$(ynh_app_setting_get --app=$app --key=language)
|
|
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
|
architecture=$(ynh_detect_arch)
|
|
version=$(ynh_app_setting_get --app=$app --key=version)
|
|
|
|
#=================================================
|
|
# CHECK VERSION
|
|
#=================================================
|
|
ynh_script_progression --message="Checking version..." --weight=1
|
|
|
|
previous_upstream_version="$(ynh_app_upstream_version --manifest="/etc/yunohost/apps/$YNH_APP_INSTANCE_NAME/manifest.json")"
|
|
upgrade_type=$(ynh_check_app_version_changed)
|
|
|
|
#=================================================
|
|
# ENSURE DOWNWARD COMPATIBILITY
|
|
#=================================================
|
|
|
|
# Save the port used if not present
|
|
if [ -z "$port" ]; then
|
|
port=8065
|
|
ynh_app_setting_set --app=$app --key=port --value=$port
|
|
fi
|
|
|
|
# Save the language used if not present
|
|
if [ -z "$language" ]; then
|
|
language="en"
|
|
ynh_app_setting_set --app=$app --key=language --value=$language
|
|
fi
|
|
|
|
# If version setting doesn't exist
|
|
if [ -z "$version" ]; then
|
|
version="Enterprise"
|
|
ynh_app_setting_set --app=$app --key=version --value=$version
|
|
fi
|
|
|
|
if [ -z "$db_name" ]; then
|
|
db_name="$app"
|
|
ynh_app_setting_set --app=$app --key=db_name --value=$db_name
|
|
fi
|
|
|
|
# Cleaning legacy permissions
|
|
if ynh_legacy_permissions_exists; then
|
|
ynh_legacy_permissions_delete_all
|
|
|
|
ynh_app_setting_delete --app=$app --key=is_public
|
|
fi
|
|
|
|
#=================================================
|
|
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
|
|
#=================================================
|
|
ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=1
|
|
|
|
# Backup the current version of the app
|
|
ynh_backup_before_upgrade
|
|
ynh_clean_setup () {
|
|
# Restore it if the upgrade fails
|
|
ynh_restore_upgradebackup
|
|
}
|
|
# Exit if an error occurs during the execution of the script
|
|
ynh_abort_if_errors
|
|
|
|
#=================================================
|
|
# STANDARD UPGRADE STEPS
|
|
#=================================================
|
|
# STOP SYSTEMD SERVICE
|
|
#=================================================
|
|
ynh_script_progression --message="Stopping a systemd service..." --weight=3
|
|
|
|
ynh_systemd_action --service_name=$app --action=stop --log_path="/var/log/$app/$app.log"
|
|
|
|
#=================================================
|
|
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
|
#=================================================
|
|
|
|
if [ "$upgrade_type" == "UPGRADE_APP" ]
|
|
then
|
|
ynh_script_progression --message="Upgrading source files..." --weight=2
|
|
|
|
# Create a temporary directory
|
|
tmpdir="$(mktemp -d)"
|
|
|
|
# Backup the config file in the temp dir
|
|
cp -a "$final_path/config/config.json" "$tmpdir/config.json"
|
|
|
|
# Remove the app directory securely
|
|
ynh_secure_remove --file="$final_path"
|
|
|
|
if [ "$version" = "Enterprise" ]; then
|
|
ynh_setup_source --dest_dir="$final_path" --source_id="enterprise"
|
|
elif [ "$version" = "Team" ]; then
|
|
ynh_setup_source --dest_dir="$final_path" --source_id="$architecture"
|
|
fi
|
|
|
|
# Copy the admin saved settings from tmp directory to final path
|
|
cp -a "$tmpdir/config.json" "$final_path/config/config.json"
|
|
|
|
# Remove the tmp directory securely
|
|
ynh_secure_remove --file="$tmpdir"
|
|
fi
|
|
|
|
#=================================================
|
|
# NGINX CONFIGURATION
|
|
#=================================================
|
|
ynh_script_progression --message="Upgrading NGINX web server configuration..." --weight=5
|
|
|
|
# Create a dedicated NGINX config
|
|
ynh_add_nginx_config
|
|
|
|
#=================================================
|
|
# CREATE DEDICATED USER
|
|
#=================================================
|
|
ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1
|
|
|
|
# Create a dedicated user (if not existing)
|
|
ynh_system_user_create --username=$app
|
|
|
|
#=================================================
|
|
# SETUP SYSTEMD
|
|
#=================================================
|
|
ynh_script_progression --message="Upgrading systemd configuration..." --weight=2
|
|
|
|
# Create a dedicated systemd config
|
|
ynh_add_systemd_config
|
|
|
|
#=================================================
|
|
# CREATE DIRECTORY FOR DATA
|
|
#=================================================
|
|
ynh_script_progression --message="Creating the data directory..." --weight=1
|
|
|
|
# Define app's data directory
|
|
data_path="/home/yunohost.app/$app"
|
|
# Create datadir folder
|
|
mkdir -p $data_path
|
|
# Give permission to the datadir
|
|
chown -R $app: "$data_path"
|
|
|
|
#=================================================
|
|
# RESTORE FILE PERMISSIONS
|
|
#=================================================
|
|
|
|
chown -R $app: $final_path
|
|
chmod -R g+w $final_path
|
|
chown -R $app: "/var/log/$app"
|
|
|
|
#=================================================
|
|
# SETUP LOGROTATE
|
|
#=================================================
|
|
ynh_script_progression --message="Upgrading logrotate configuration..." --weight=1
|
|
|
|
# Use logrotate to manage app-specific logfile(s)
|
|
ynh_use_logrotate --non-append
|
|
|
|
#=================================================
|
|
# INTEGRATE SERVICE IN YUNOHOST
|
|
#=================================================
|
|
ynh_script_progression --message="Integrating service in YunoHost..." --weight=1
|
|
|
|
yunohost service add $app --description="Collaboration platform built for developers" --log="/var/log/$app/$app.log"
|
|
|
|
#=================================================
|
|
# START SYSTEMD SERVICE
|
|
#=================================================
|
|
ynh_script_progression --message="Starting a systemd service..." --weight=2
|
|
|
|
# A lengthy database migration runs when upgrading from a version < 5.38.
|
|
if dpkg --compare-versions "$previous_upstream_version" lt "5.38.0"
|
|
then
|
|
ynh_print_warn --message="Lengthy database migrations will now run. This may take a while..."
|
|
fi
|
|
|
|
# Start a systemd service
|
|
ynh_systemd_action --service_name=$app --action=start --log_path=systemd --line_match="Started Mattermost"
|
|
|
|
#=================================================
|
|
# RELOAD NGINX
|
|
#=================================================
|
|
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
|
|
|
|
ynh_systemd_action --service_name=nginx --action=reload
|
|
|
|
#=================================================
|
|
# END OF SCRIPT
|
|
#=================================================
|
|
|
|
ynh_script_progression --message="Upgrade of $app completed" --last
|