Browse Source

Global upgrade

Maniack Crudelis 5 years ago
parent
commit
05d5511136
9 changed files with 114 additions and 28 deletions
  1. 7 1
      check_process.default
  2. 2 1
      manifest.json
  3. 11 11
      scripts/_common.sh
  4. 13 0
      scripts/backup
  5. 11 0
      scripts/change_url
  6. 20 12
      scripts/install
  7. 19 3
      scripts/remove
  8. 13 0
      scripts/restore
  9. 18 0
      scripts/upgrade

+ 7 - 1
check_process.default

@@ -20,11 +20,12 @@
 		setup_private=1
 		setup_public=1
 		upgrade=1
+		upgrade=1	from_commit=CommitHash
 		backup_restore=1
 		multi_instance=1
 		incorrect_path=1
 		port_already_use=0
-		change_url=0
+		change_url=1
 ;;; Levels
 	Level 1=auto
 	Level 2=auto
@@ -41,3 +42,8 @@
 ;;; Options
 Email=
 Notification=none
+;;; Upgrade options
+	; commit=CommitHash
+		name=Name and date of the commit.
+		manifest_arg=domain=DOMAIN&path=PATH&admin=USER&language=fr&is_public=1&password=pass&port=666&
+

+ 2 - 1
manifest.json

@@ -15,7 +15,7 @@
         "url": "http://example.com"
     },
     "requirements": {
-        "yunohost": ">= 2.7.14"
+        "yunohost": ">= 3.4"
     },
     "multi_instance": true,
     "services": [
@@ -64,6 +64,7 @@
             },
             {
                 "name": "language",
+                "type": "string",
                 "ask": {
                     "en": "Choose the application language",
                     "fr": "Choisissez la langue de l'application"

+ 11 - 11
scripts/_common.sh

@@ -1,13 +1,13 @@
 #!/bin/bash
 
-# ============= FUTURE YUNOHOST HELPER =============
-# Delete a file checksum from the app settings
-#
-# $app should be defined when calling this helper
-#
-# usage: ynh_remove_file_checksum file
-# | arg: file - The file for which the checksum will be deleted
-ynh_delete_file_checksum () {
-	local checksum_setting_name=checksum_${1//[\/ ]/_}	# Replace all '/' and ' ' by '_'
-	ynh_app_setting_delete $app $checksum_setting_name
-}
+#=================================================
+# PERSONNAL HELPERS
+#=================================================
+
+#=================================================
+# EXPERIMENTAL HELPERS
+#=================================================
+
+#=================================================
+# FUTUR OFFICIAL HELPERS
+#=================================================

+ 13 - 0
scripts/backup

@@ -23,6 +23,7 @@ ynh_abort_if_errors
 #=================================================
 # LOAD SETTINGS
 #=================================================
+ynh_print_info "Load settings"
 
 app=$YNH_APP_INSTANCE_NAME
 
@@ -35,24 +36,28 @@ db_name=$(ynh_app_setting_get $app db_name)
 #=================================================
 # BACKUP THE APP MAIN DIR
 #=================================================
+ynh_print_info "Backup the app main dir"
 
 ynh_backup "$final_path"
 
 #=================================================
 # BACKUP THE NGINX CONFIGURATION
 #=================================================
+ynh_print_info "Backup nginx configuration"
 
 ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf"
 
 #=================================================
 # BACKUP THE PHP-FPM CONFIGURATION
 #=================================================
+ynh_print_info "Backup php-fpm configuration"
 
 ynh_backup "/etc/php/7.0/fpm/pool.d/$app.conf"
 
 #=================================================
 # BACKUP THE MYSQL DATABASE
 #=================================================
+ynh_print_info "Backup the mysql database"
 
 ynh_mysql_dump_db "$db_name" > db.sql
 
@@ -61,12 +66,14 @@ ynh_mysql_dump_db "$db_name" > db.sql
 #=================================================
 # BACKUP LOGROTATE
 #=================================================
+ynh_print_info "Backup logrotate configuration"
 
 ynh_backup "/etc/logrotate.d/$app"
 
 #=================================================
 # BACKUP SYSTEMD
 #=================================================
+ynh_print_info "Backup systemd configuration"
 
 ynh_backup "/etc/systemd/system/$app.service"
 
@@ -75,3 +82,9 @@ ynh_backup "/etc/systemd/system/$app.service"
 #=================================================
 
 ynh_backup "/etc/cron.d/$app"
+
+#=================================================
+# END OF SCRIPT
+#=================================================
+
+ynh_print_info "Backup script completed. Please wait for YunoHost to create the backup."

+ 11 - 0
scripts/change_url

@@ -12,6 +12,7 @@ source /usr/share/yunohost/helpers
 #=================================================
 # RETRIEVE ARGUMENTS
 #=================================================
+ynh_print_info "Retrieve arguments from the manifest"
 
 old_domain=$YNH_APP_OLD_DOMAIN
 old_path=$YNH_APP_OLD_PATH
@@ -24,6 +25,7 @@ app=$YNH_APP_INSTANCE_NAME
 #=================================================
 # LOAD SETTINGS
 #=================================================
+ynh_print_info "Load settings"
 
 # Needed for helper "ynh_add_nginx_config"
 final_path=$(ynh_app_setting_get $app final_path)
@@ -35,6 +37,7 @@ final_path=$(ynh_app_setting_get $app final_path)
 #=================================================
 # CHECK THE SYNTAX OF THE PATHS
 #=================================================
+ynh_print_info "Check the syntax of the paths"
 
 test -n "$old_path" || old_path="/"
 test -n "$new_path" || new_path="/"
@@ -62,6 +65,7 @@ fi
 #=================================================
 # MODIFY URL IN NGINX CONF
 #=================================================
+ynh_print_info "Modify url in nginx configuration"
 
 nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf
 
@@ -98,5 +102,12 @@ fi
 #=================================================
 # RELOAD NGINX
 #=================================================
+ynh_print_info "Reload nginx"
 
 systemctl reload nginx
+
+#=================================================
+# END OF SCRIPT
+#=================================================
+
+ynh_print_info "Change of url completed"

+ 20 - 12
scripts/install

@@ -23,6 +23,7 @@ ynh_abort_if_errors
 #=================================================
 # RETRIEVE ARGUMENTS FROM THE MANIFEST
 #=================================================
+ynh_print_info "Retrieve arguments from the manifest ..."
 
 domain=$YNH_APP_ARG_DOMAIN
 path_url=$YNH_APP_ARG_PATH
@@ -62,8 +63,8 @@ ynh_webpath_register $app $domain $path_url
 #=================================================
 # STORE SETTINGS FROM MANIFEST
 #=================================================
+ynh_print_info "Store settings from manifest ..."
 
-ynh_print_info "Starting example app installation ..."
 ynh_app_setting_set $app domain $domain
 ynh_app_setting_set $app path $path_url
 ynh_app_setting_set $app admin $admin
@@ -75,22 +76,23 @@ ynh_app_setting_set $app language $language
 #=================================================
 # FIND AND OPEN A PORT
 #=================================================
+ynh_print_info "Configuring firewall ..."
 
 ### Use these lines if you have to open a port for the application
 ### `ynh_find_port` will find the first available port starting from the given port.
 ### If you're not using these lines:
 ###		- Remove the section "CLOSE A PORT" in the remove script
 
-ynh_print_info "Configuring firewall ..."
 # Find a free port
 port=$(ynh_find_port 8095)
 # Open this port
-yunohost firewall allow --no-upnp TCP $port 2>&1
+ynh_exec_warn_less yunohost firewall allow --no-upnp TCP $port
 ynh_app_setting_set $app port $port
 
 #=================================================
 # INSTALL DEPENDENCIES
 #=================================================
+ynh_print_info "Installing dependencies ..."
 
 ### `ynh_install_app_dependencies` allows you to add any "apt" dependencies to the package.
 ### Those deb packages will be installed as dependencies of this package.
@@ -99,12 +101,12 @@ ynh_app_setting_set $app port $port
 ###		- As well as the section "REINSTALL DEPENDENCIES" in the restore script
 ###		- And the section "UPGRADE DEPENDENCIES" in the upgrade script
 
-ynh_print_info "Installing dependencies ..."
 ynh_install_app_dependencies deb1 deb2
 
 #=================================================
 # CREATE A MYSQL DATABASE
 #=================================================
+ynh_print_info "Creating a mysql database ..."
 
 ### Use these lines if you need a database for the application.
 ### `ynh_mysql_setup_db` will create a database, an associated user and a ramdom password.
@@ -115,7 +117,6 @@ ynh_install_app_dependencies deb1 deb2
 ###		- Remove also the section "REMOVE THE MYSQL DATABASE" in the remove script
 ###		- As well as the section "RESTORE THE MYSQL DATABASE" in the restore script
 
-ynh_print_info "Initializing database ..."
 db_name=$(ynh_sanitize_dbid $app)
 ynh_app_setting_set $app db_name $db_name
 ynh_mysql_setup_db $db_name $db_name
@@ -123,12 +124,12 @@ ynh_mysql_setup_db $db_name $db_name
 #=================================================
 # DOWNLOAD, CHECK AND UNPACK SOURCE
 #=================================================
+ynh_print_info "Setting up source files ..."
 
 ### `ynh_setup_source` is used to install an app from a zip or tar.gz file,
 ### downloaded from an upstream source, like a git repository.
 ### `ynh_setup_source` use the file conf/app.src
 
-ynh_print_info "Setting up source files ..."
 ynh_app_setting_set $app final_path $final_path
 # Download, check integrity, uncompress and patch the source from app.src
 ynh_setup_source "$final_path"
@@ -136,24 +137,25 @@ ynh_setup_source "$final_path"
 #=================================================
 # NGINX CONFIGURATION
 #=================================================
+ynh_print_info "Configuring nginx ..."
 
 ### `ynh_add_nginx_config` will use the file conf/nginx.conf
 
-ynh_print_info "Configuring nginx ..."
 # Create a dedicated nginx config
 ynh_add_nginx_config
 
 #=================================================
 # CREATE DEDICATED USER
 #=================================================
+ynh_print_info "Configuring system user ..."
 
 # Create a system user
-ynh_print_info "Configuring system user ..."
 ynh_system_user_create $app
 
 #=================================================
 # PHP-FPM CONFIGURATION
 #=================================================
+ynh_print_info "Configuring php-fpm ..."
 
 ### `ynh_add_fpm_config` is used to set up a PHP config.
 ### You can remove it if your app doesn't use PHP.
@@ -167,7 +169,6 @@ ynh_system_user_create $app
 ###		- And the section "PHP-FPM CONFIGURATION" in the upgrade script
 
 # Create a dedicated php-fpm config
-ynh_print_info "Configuring php-fpm ..."
 ynh_add_fpm_config
 
 #=================================================
@@ -179,6 +180,7 @@ ynh_add_fpm_config
 #=================================================
 # SETUP SYSTEMD
 #=================================================
+ynh_print_info "Configuring a systemd service ..."
 
 ### `ynh_systemd_config` is used to configure a systemd script for an app.
 ### It can be used for apps that use sysvinit (with adaptation) or systemd.
@@ -192,7 +194,6 @@ ynh_add_fpm_config
 ###		- And the section "SETUP SYSTEMD" in the upgrade script
 
 # Create a dedicated systemd config
-ynh_print_info "Configuring systemd service ..."
 ynh_add_systemd_config
 
 #=================================================
@@ -262,6 +263,7 @@ chown -R root: $final_path
 #=================================================
 # SETUP LOGROTATE
 #=================================================
+ynh_print_info "Configuring log rotation ..."
 
 ### `ynh_use_logrotate` is used to configure a logrotate configuration for the logs of this app.
 ### Use this helper only if there is effectively a log file for this app.
@@ -272,7 +274,6 @@ chown -R root: $final_path
 ###		- And the section "SETUP LOGROTATE" in the upgrade script
 
 # Use logrotate to manage application logfile(s)
-ynh_print_info "Configuring log rotation ..."
 ynh_use_logrotate
 
 #=================================================
@@ -294,6 +295,7 @@ yunohost service add $app --log "/var/log/$app/$app.log"
 #=================================================
 # SETUP SSOWAT
 #=================================================
+ynh_script_progression --message="Configuring SSOwat ..."
 
 # Make app public if necessary
 if [ $is_public -eq 1 ]
@@ -305,6 +307,12 @@ fi
 #=================================================
 # RELOAD NGINX
 #=================================================
-
 ynh_print_info "Reloading nginx ..."
+
 systemctl reload nginx
+
+#=================================================
+# END OF SCRIPT
+#=================================================
+
+ynh_print_info "Installation completed"

+ 19 - 3
scripts/remove

@@ -12,6 +12,7 @@ source /usr/share/yunohost/helpers
 #=================================================
 # LOAD SETTINGS
 #=================================================
+ynh_print_info "Load settings"
 
 app=$YNH_APP_INSTANCE_NAME
 
@@ -30,13 +31,14 @@ final_path=$(ynh_app_setting_get $app final_path)
 # Remove a service from the admin panel, added by `yunohost service add`
 if yunohost service status | grep -q $app
 then
-	echo "Remove $app service"
+	ynh_print_info "Remove $app service"
 	yunohost service remove $app
 fi
 
 #=================================================
 # STOP AND REMOVE SERVICE
 #=================================================
+ynh_print_info "Stop and remove the service"
 
 # Remove the dedicated systemd config
 ynh_remove_systemd_config
@@ -44,6 +46,7 @@ ynh_remove_systemd_config
 #=================================================
 # REMOVE THE MYSQL DATABASE
 #=================================================
+ynh_print_info "Remove the mysql database"
 
 # Remove a database if it exists, along with the associated user
 ynh_mysql_remove_db $db_user $db_name
@@ -51,6 +54,7 @@ ynh_mysql_remove_db $db_user $db_name
 #=================================================
 # REMOVE DEPENDENCIES
 #=================================================
+ynh_print_info "Remove dependencies"
 
 # Remove metapackage and its dependencies
 ynh_remove_app_dependencies
@@ -58,6 +62,7 @@ ynh_remove_app_dependencies
 #=================================================
 # REMOVE APP MAIN DIR
 #=================================================
+ynh_print_info "Remove app main directory"
 
 # Remove the app directory securely
 ynh_secure_remove "$final_path"
@@ -65,6 +70,7 @@ ynh_secure_remove "$final_path"
 #=================================================
 # REMOVE NGINX CONFIGURATION
 #=================================================
+ynh_print_info "Remove nginx configuration"
 
 # Remove the dedicated nginx config
 ynh_remove_nginx_config
@@ -72,6 +78,7 @@ ynh_remove_nginx_config
 #=================================================
 # REMOVE PHP-FPM CONFIGURATION
 #=================================================
+ynh_print_info "Remove php-fpm configuration"
 
 # Remove the dedicated php-fpm config
 ynh_remove_fpm_config
@@ -79,6 +86,7 @@ ynh_remove_fpm_config
 #=================================================
 # REMOVE LOGROTATE CONFIGURATION
 #=================================================
+ynh_print_info "Remove logrotate configuration"
 
 # Remove the app-specific logrotate config
 ynh_remove_logrotate
@@ -86,11 +94,12 @@ ynh_remove_logrotate
 #=================================================
 # CLOSE A PORT
 #=================================================
+ynh_print_info "Close ports"
 
 if yunohost firewall list | grep -q "\- $port$"
 then
-	echo "Close port $port" >&2
-	yunohost firewall disallow TCP $port 2>&1
+	ynh_print_info "Close port $port"
+	ynh_exec_warn_less yunohost firewall disallow TCP $port
 fi
 
 #=================================================
@@ -113,6 +122,13 @@ ynh_secure_remove "/var/log/$app/"
 #=================================================
 # REMOVE DEDICATED USER
 #=================================================
+ynh_print_info "Remove the dedicated user"
 
 # Delete a system user
 ynh_system_user_delete $app
+
+#=================================================
+# END OF SCRIPT
+#=================================================
+
+ynh_print_info "Deletion completed"

+ 13 - 0
scripts/restore

@@ -23,6 +23,7 @@ ynh_abort_if_errors
 #=================================================
 # LOAD SETTINGS
 #=================================================
+ynh_print_info "Load settings"
 
 app=$YNH_APP_INSTANCE_NAME
 
@@ -51,12 +52,14 @@ ynh_restore_file "/etc/nginx/conf.d/$domain.d/$app.conf"
 #=================================================
 # RESTORE THE APP MAIN DIR
 #=================================================
+ynh_print_info "Restore the app main directory"
 
 ynh_restore_file "$final_path"
 
 #=================================================
 # RECREATE THE DEDICATED USER
 #=================================================
+ynh_print_info "Recreate the dedicated user"
 
 # Create the dedicated user (if not existing)
 ynh_system_user_create $app
@@ -79,6 +82,7 @@ ynh_restore_file "/etc/php/7.0/fpm/pool.d/$app.conf"
 #=================================================
 # REINSTALL DEPENDENCIES
 #=================================================
+ynh_print_info "Reinstall dependencies"
 
 # Define and install dependencies
 ynh_install_app_dependencies deb1 deb2
@@ -86,6 +90,7 @@ ynh_install_app_dependencies deb1 deb2
 #=================================================
 # RESTORE THE MYSQL DATABASE
 #=================================================
+ynh_print_info "Restore the mysql database"
 
 db_pwd=$(ynh_app_setting_get $app mysqlpwd)
 ynh_mysql_setup_db $db_name $db_name $db_pwd
@@ -94,6 +99,7 @@ ynh_mysql_connect_as $db_name $db_pwd $db_name < ./db.sql
 #=================================================
 # RESTORE SYSTEMD
 #=================================================
+ynh_print_info "Restore the systemd configuration"
 
 ynh_restore_file "/etc/systemd/system/$app.service"
 systemctl enable $app.service
@@ -121,6 +127,13 @@ ynh_restore_file "/etc/logrotate.d/$app"
 #=================================================
 # RELOAD NGINX AND PHP-FPM
 #=================================================
+ynh_print_info "Reload nginx and php-fpm"
 
 systemctl reload php7.0-fpm
 systemctl reload nginx
+
+#=================================================
+# END OF SCRIPT
+#=================================================
+
+ynh_print_info "Restoration completed"

+ 18 - 0
scripts/upgrade

@@ -12,6 +12,7 @@ source /usr/share/yunohost/helpers
 #=================================================
 # LOAD SETTINGS
 #=================================================
+ynh_print_info "Load settings"
 
 app=$YNH_APP_INSTANCE_NAME
 
@@ -26,6 +27,7 @@ db_name=$(ynh_app_setting_get $app db_name)
 #=================================================
 # ENSURE DOWNWARD COMPATIBILITY
 #=================================================
+ynh_print_info "Ensure downward compatibility"
 
 # Fix is_public as a boolean value
 if [ "$is_public" = "Yes" ]; then
@@ -51,6 +53,7 @@ fi
 #=================================================
 # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
 #=================================================
+ynh_print_info "Backup the app before upgrading"
 
 # Backup the current version of the app
 ynh_backup_before_upgrade
@@ -73,6 +76,7 @@ path_url=$(ynh_normalize_url_path $path_url)
 #=================================================
 # DOWNLOAD, CHECK AND UNPACK SOURCE
 #=================================================
+ynh_print_info "Download, check and unpack source"
 
 # Download, check integrity, uncompress and patch the source from app.src
 ynh_setup_source "$final_path"
@@ -80,6 +84,7 @@ ynh_setup_source "$final_path"
 #=================================================
 # NGINX CONFIGURATION
 #=================================================
+ynh_print_info "Reconfigure nginx"
 
 # Create a dedicated nginx config
 ynh_add_nginx_config
@@ -87,12 +92,14 @@ ynh_add_nginx_config
 #=================================================
 # UPGRADE DEPENDENCIES
 #=================================================
+ynh_print_info "Upgrade dependencies"
 
 ynh_install_app_dependencies deb1 deb2
 
 #=================================================
 # CREATE DEDICATED USER
 #=================================================
+ynh_print_info "Create a dedicated user"
 
 # Create a dedicated user (if not existing)
 ynh_system_user_create $app
@@ -100,6 +107,7 @@ ynh_system_user_create $app
 #=================================================
 # PHP-FPM CONFIGURATION
 #=================================================
+ynh_print_info "Reconfigure php-fpm"
 
 # Create a dedicated php-fpm config
 ynh_add_fpm_config
@@ -119,6 +127,7 @@ ynh_store_file_checksum "$final_path/CONFIG_FILE"
 #=================================================
 # SETUP LOGROTATE
 #=================================================
+ynh_print_info "Reconfigure logrotate"
 
 # Use logrotate to manage app-specific logfile(s)
 ynh_use_logrotate --non-append
@@ -126,6 +135,7 @@ ynh_use_logrotate --non-append
 #=================================================
 # SETUP SYSTEMD
 #=================================================
+ynh_print_info "Reconfigure systemd"
 
 # Create a dedicated systemd config
 ynh_add_systemd_config
@@ -142,6 +152,7 @@ chown -R root: $final_path
 #=================================================
 # SETUP SSOWAT
 #=================================================
+ynh_print_info "Reconfigure SSOwat"
 
 # Make app public if necessary
 if [ $is_public -eq 1 ]
@@ -153,5 +164,12 @@ fi
 #=================================================
 # RELOAD NGINX
 #=================================================
+ynh_print_info "Reload nginx"
 
 systemctl reload nginx
+
+#=================================================
+# END OF SCRIPT
+#=================================================
+
+ynh_print_info "Upgrade completed"