From 0963d081aad00c2657c01affcb6d3f970c742186 Mon Sep 17 00:00:00 2001 From: yalh76 Date: Wed, 6 Jan 2021 01:46:32 +0100 Subject: [PATCH 01/14] Upgrade to 3.3.0~ynh1 --- README.md | 2 +- README_fr.md | 2 +- check_process | 4 ++++ conf/app.src | 4 ++-- manifest.json | 2 +- scripts/_common.sh | 12 +++--------- 6 files changed, 12 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 19b1ee1..dc0c3c2 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ If you don't have YunoHost, please see [here](https://yunohost.org/#/install) to ## Overview Mastodon is a free, open-source microblogging social network. It is a decentralized alternative to commercial platforms like Twitter and avoids the risks of a single company monopolizing your communication for commercial purposes. -**Shipped version:** 3.2.2 +**Shipped version:** 3.3.0 ## Important points to read before installing diff --git a/README_fr.md b/README_fr.md index 6c6ee1e..5f41969 100644 --- a/README_fr.md +++ b/README_fr.md @@ -11,7 +11,7 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour ## Vue d'ensemble Mastodon est un réseau social de microblog auto-hébergé et open source. C'est une alternative décentralisée aux plates-formes commerciales comme Twitter. Mastodon évite ainsi les risques qu'une seule société monopolise votre communication à des fins commerciales. -**Version incluse:** 3.2.2 +**Version incluse:** 3.3.0 ## Points importants à lire avant l'installation diff --git a/check_process b/check_process index 6fbc748..233a374 100644 --- a/check_process +++ b/check_process @@ -25,6 +25,8 @@ upgrade=1 from_commit=248b717f373f3c82bdb19c33cf20980494608697 # 3.2.1~ynh2 upgrade=1 from_commit=74908bf3e70c134bc838c7db3ae8b5aa0938cd75 + # 3.2.2~ynh1 + upgrade=1 from_commit=a233ccc644d97aa89756fac9f0ce68c98d81d27c backup_restore=1 multi_instance=1 # This test is no longer necessary since the version 2.7 (PR: https://github.com/YunoHost/yunohost/pull/304), you can still do it if your app could be installed with this version. @@ -50,3 +52,5 @@ Notification=all name=3.2.1~ynh1 ; commit=74908bf3e70c134bc838c7db3ae8b5aa0938cd75 name=3.2.1~ynh2 + ; commit=a233ccc644d97aa89756fac9f0ce68c98d81d27c + name=3.2.2~ynh1 diff --git a/conf/app.src b/conf/app.src index 5d0c0b4..1f196ca 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://github.com/tootsuite/mastodon/archive/v3.2.2.tar.gz -SOURCE_SUM=298396b1bd0065689c3d9225c8466c6651979834acb4eec511057ff1ba630781 +SOURCE_URL=https://github.com/tootsuite/mastodon/archive/v3.3.0.tar.gz +SOURCE_SUM=ffbaeaf18d9c440ac61c6c5c29fd6581b88c1d2843170f2cb5f0fcf8dcc0ecd6 SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true diff --git a/manifest.json b/manifest.json index 1fc7555..3dcd20d 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "A libre and federated social network.", "fr": "Un réseau social libre et fédéré." }, - "version": "3.2.2~ynh1", + "version": "3.3.0~ynh1", "url": "https://github.com/tootsuite/mastodon", "license": "AGPL-3.0-or-later", "maintainer": [ diff --git a/scripts/_common.sh b/scripts/_common.sh index ad4ed8e..1c28aec 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -9,15 +9,9 @@ pkg_dependencies="imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git MEMORY_NEEDED="2560" -if [ "$(lsb_release --codename --short)" = "buster" ]; then - RUBY_VERSION="2.6.6" - BUNDLER_VERSION="1.17.3" - NODEJS_VERSION="12" -else - RUBY_VERSION="2.6.5" - BUNDLER_VERSION="1.17.3" - NODEJS_VERSION="10" -fi +RUBY_VERSION="2.7.2" +BUNDLER_VERSION="1.17.3" +NODEJS_VERSION="12" #================================================= # PERSONAL HELPERS From 43b89206b18f095d9f9d3e38993db88ac511b609 Mon Sep 17 00:00:00 2001 From: yalh76 Date: Thu, 7 Jan 2021 20:33:33 +0100 Subject: [PATCH 02/14] upgrade ruby-build --- scripts/ynh_install_ruby__2 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/ynh_install_ruby__2 b/scripts/ynh_install_ruby__2 index df03e07..74de90e 100644 --- a/scripts/ynh_install_ruby__2 +++ b/scripts/ynh_install_ruby__2 @@ -22,8 +22,8 @@ SOURCE_SUM=80ad89ffe04c0b481503bd375f05c212bbc7d44ef5f5e649e0acdf25eba86736" > " # Build an app.src for ruby-build mkdir -p "../conf" - echo "SOURCE_URL=https://github.com/rbenv/ruby-build/archive/v20200520.tar.gz -SOURCE_SUM=52be6908a94fbd4a94f5064e8b19d4a3baa4b773269c3884165518d83bcc8922" > "../conf/ruby-build.src" + echo "SOURCE_URL=https://github.com/rbenv/ruby-build/archive/v20201225.tar.gz +SOURCE_SUM=54cae123c2758e7714c66aca7ef8bc7f29cda8583891191ceb3053c6d098ecf1" > "../conf/ruby-build.src" # Download and extract ruby-build ynh_setup_source "$rbenv_install_dir/plugins/ruby-build" ruby-build From 94e8f5c8c8a1497aab24e207a448bb21180bac1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sat, 9 Jan 2021 16:21:48 +0100 Subject: [PATCH 03/14] Set badge to SVG --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 19b1ee1..ab13c01 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Mastodon for YunoHost [![Integration level](https://dash.yunohost.org/integration/mastodon.svg)](https://dash.yunohost.org/appci/app/mastodon) ![](https://ci-apps.yunohost.org/ci/badges/mastodon.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/mastodon.maintain.svg) -[![Install Mastodon with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=mastodon) +[![Install Mastodon with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=mastodon) *[Lire ce readme en français.](./README_fr.md)* From 6f911bd9a22c5ea6314d32958bf2736d497d3894 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Sat, 9 Jan 2021 22:44:16 +0100 Subject: [PATCH 04/14] Finding an available port --- scripts/install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install b/scripts/install index d4d51d9..a005eba 100644 --- a/scripts/install +++ b/scripts/install @@ -62,7 +62,7 @@ ynh_app_setting_set --app=$app --key=language --value=$language #================================================= # FIND AND OPEN A PORT #================================================= -ynh_script_progression --message="Configuring firewall..." +ynh_script_progression --message="Finding an available port..." # Find an available port port_web=$(ynh_find_port --port=3000) From aa8928abd9d670920a23e922ab6d188ba530ffb1 Mon Sep 17 00:00:00 2001 From: yalh76 Date: Wed, 17 Feb 2021 19:22:07 +0100 Subject: [PATCH 05/14] Apply last example_ynh --- README.md | 11 ++++--- README_fr.md | 13 ++++---- check_process | 8 +---- conf/app.src | 1 + issue_template.md | 55 ++++++++++++++++++++++++++++++++++ pull_request_template.md | 4 +-- scripts/install | 12 ++++---- scripts/remove | 8 ++--- scripts/restore | 7 ++--- scripts/upgrade | 65 ++++++++++------------------------------ 10 files changed, 98 insertions(+), 86 deletions(-) create mode 100644 issue_template.md diff --git a/README.md b/README.md index 6f760f4..5336221 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ # Mastodon for YunoHost -[![Integration level](https://dash.yunohost.org/integration/mastodon.svg)](https://dash.yunohost.org/appci/app/mastodon) ![](https://ci-apps.yunohost.org/ci/badges/mastodon.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/mastodon.maintain.svg) +[![Integration level](https://dash.yunohost.org/integration/mastodon.svg)](https://dash.yunohost.org/appci/app/mastodon) ![](https://ci-apps.yunohost.org/ci/badges/mastodon.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/mastodon.maintain.svg) [![Install Mastodon with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=mastodon) *[Lire ce readme en français.](./README_fr.md)* -> *This package allow you to install Mastodon quickly and simply on a YunoHost server. -If you don't have YunoHost, please see [here](https://yunohost.org/#/install) to know how to install and enjoy it.* +> *This package allows you to install Mastodon quickly and simply on a YunoHost server. +If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.* ## Overview Mastodon is a free, open-source microblogging social network. It is a decentralized alternative to commercial platforms like Twitter and avoids the risks of a single company monopolizing your communication for commercial purposes. @@ -70,10 +70,9 @@ LDAP authentication is activated. All YunoHost users can authenticate. --- -Developers info ----------------- +## Developer info -Please do your pull request to the [testing branch](https://github.com/YunoHost-Apps/mastodon_ynh/tree/testing). +Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/mastodon_ynh/tree/testing). To try the testing branch, please proceed like that. ``` diff --git a/README_fr.md b/README_fr.md index 5f41969..6553753 100644 --- a/README_fr.md +++ b/README_fr.md @@ -1,12 +1,12 @@ # Mastodon pour YunoHost -[![Integration level](https://dash.yunohost.org/integration/mastodon.svg)](https://dash.yunohost.org/appci/app/mastodon) ![](https://ci-apps.yunohost.org/ci/badges/mastodon.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/mastodon.maintain.svg) -[![Install Mastodon with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=mastodon) +[![Niveau d'intégration](https://dash.yunohost.org/integration/mastodon.svg)](https://dash.yunohost.org/appci/app/mastodon) ![](https://ci-apps.yunohost.org/ci/badges/mastodon.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/mastodon.maintain.svg) +[![Installer Mastodon avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=mastodon) *[Read this readme in english.](./README.md)* > *Ce package vous permet d'installer Mastodon rapidement et simplement sur un serveur YunoHost. -Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour savoir comment l'installer et en profiter.* +Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/#/install) pour apprendre comment l'installer.* ## Vue d'ensemble Mastodon est un réseau social de microblog auto-hébergé et open source. C'est une alternative décentralisée aux plates-formes commerciales comme Twitter. Mastodon évite ainsi les risques qu'une seule société monopolise votre communication à des fins commerciales. @@ -53,7 +53,7 @@ L'utilisateur admin est créé automatiquement comme : user@domain.tld ## Caractéristiques spécifiques YunoHost -#### Support multi-utilisateurs +#### Support multi-utilisateur L'authentification LDAP est activée. Tous les utilisateurs YunoHost peuvent s'authentifier. @@ -62,7 +62,7 @@ L'authentification LDAP est activée. Tous les utilisateurs YunoHost peuvent s'a * x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/mastodon%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/mastodon/) * ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/mastodon%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/mastodon/) -## Links +## Liens * Signaler un bug : https://github.com/YunoHost-Apps/mastodon_ynh/issues * Site de l'application : https://joinmastodon.org/ @@ -71,8 +71,7 @@ L'authentification LDAP est activée. Tous les utilisateurs YunoHost peuvent s'a --- -Informations pour les développeurs ----------------- +## Informations pour les développeurs Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/mastodon_ynh/tree/testing). diff --git a/check_process b/check_process index 233a374..a5f7d53 100644 --- a/check_process +++ b/check_process @@ -1,5 +1,4 @@ -;; Nom du test - auto_remove=1 +;; Test complet ; Manifest domain="domain.tld" (DOMAIN) admin="john" (USER) @@ -29,13 +28,8 @@ upgrade=1 from_commit=a233ccc644d97aa89756fac9f0ce68c98d81d27c backup_restore=1 multi_instance=1 - # This test is no longer necessary since the version 2.7 (PR: https://github.com/YunoHost/yunohost/pull/304), you can still do it if your app could be installed with this version. - # incorrect_path=1 port_already_use=0 change_url=0 -;;; Levels - # If the level 5 (Package linter) is forced to 1. Please add justifications here. - Level 5=auto ;;; Options Email=yalh@yahoo.com Notification=all diff --git a/conf/app.src b/conf/app.src index 1f196ca..6fb011a 100644 --- a/conf/app.src +++ b/conf/app.src @@ -4,3 +4,4 @@ SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true SOURCE_FILENAME= +SOURCE_EXTRACT=true diff --git a/issue_template.md b/issue_template.md new file mode 100644 index 0000000..c6c9254 --- /dev/null +++ b/issue_template.md @@ -0,0 +1,55 @@ +--- +name: Bug report +about: When creating a bug report, please use the following template to provide all the relevant information and help debugging efficiently. + +--- + +**How to post a meaningful bug report** +1. *Read this whole template first.* +2. *Determine if you are on the right place:* + - *If you were performing an action on the app from the webadmin or the CLI (install, update, backup, restore, change_url...), you are on the right place!* + - *Otherwise, the issue may be due to Mastodon itself. Refer to its documentation or repository for help.* + - *When in doubt, post here and we will figure it out together.* +3. *Delete the italic comments as you write over them below, and remove this guide.* +--- + +### Describe the bug + +*A clear and concise description of what the bug is.* + +### Context + +- Hardware: *VPS bought online / Old laptop or computer / Raspberry Pi at home / Internet Cube with VPN / Other ARM board / ...* +- YunoHost version: x.x.x +- I have access to my server: *Through SSH | through the webadmin | direct access via keyboard / screen | ...* +- Are you in a special context or did you perform some particular tweaking on your YunoHost instance?: *no / yes* + - If yes, please explain: +- Using, or trying to install package version/branch: +- If upgrading, current package version: *can be found in the admin, or with `yunohost app info $app_id`* + +### Steps to reproduce + +- *If you performed a command from the CLI, the command itself is enough. For example:* + ```sh + sudo yunohost app install mastodon + ``` +- *If you used the webadmin, please perform the equivalent command from the CLI first.* +- *If the error occurs in your browser, explain what you did:* + 1. *Go to '...'* + 2. *Click on '...'* + 3. *Scroll down to '...'* + 4. *See error* + +### Expected behavior + +*A clear and concise description of what you expected to happen. You can remove this section if the command above is enough to understand your intent.* + +### Logs + +*When an operation fails, YunoHost provides a simple way to share the logs.* +- *In the webadmin, the error message contains a link to the relevant log page. On that page, you will be able to 'Share with Yunopaste'. If you missed it, the logs of previous operations are also available under Tools > Logs.* +- *In command line, the command to share the logs is displayed at the end of the operation and looks like `yunohost log display [log name] --share`. If you missed it, you can find the log ID of a previous operation using `yunohost log list`.* + +*After sharing the log, please copypaste directly the link provided by YunoHost (to help readability, no need to copypaste the entire content of the log here, just the link is enough...)* + +*If applicable and useful, add screenshots to help explain your problem.* diff --git a/pull_request_template.md b/pull_request_template.md index 7f09e84..6c28fc5 100644 --- a/pull_request_template.md +++ b/pull_request_template.md @@ -13,6 +13,4 @@ ## Package_check results --- -*If you have access to [App Continuous Integration for packagers](https://yunohost.org/#/packaging_apps_ci) you can provide a link to the package_check results like below, replacing '-NUM-' in this link by the PR number and USERNAME by your username on the ci-apps-dev. Or you provide a screenshot or a pastebin of the results* - -[![Build Status](https://ci-apps-dev.yunohost.org/jenkins/job/mastodon_ynh%20PR-NUM-%20(USERNAME)/badge/icon)](https://ci-apps-dev.yunohost.org/jenkins/job/mastodon_ynh%20PR-NUM-%20(USERNAME)/) +* An automatic package_check will be launch at https://ci-apps-dev.yunohost.org/, when you add a specific comment to your Pull Request: "!testme", "!gogogadgetoci" or "By the power of systemd, I invoke The Great App CI to test this Pull Request!"* diff --git a/scripts/install b/scripts/install index a005eba..8f4ca05 100644 --- a/scripts/install +++ b/scripts/install @@ -54,7 +54,6 @@ ynh_script_progression --message="Storing installation settings..." ynh_app_setting_set --app=$app --key=domain --value=$domain ynh_app_setting_set --app=$app --key=path --value=$path_url ynh_app_setting_set --app=$app --key=admin --value=$admin -ynh_app_setting_set --app=$app --key=is_public --value=$is_public ynh_app_setting_set --app=$app --key=language --value=$language #================================================= @@ -83,9 +82,9 @@ ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ st #================================================= # CREATE A POSTGRESQL DATABASE #================================================= -ynh_script_progression --message="Creating a MySQL database..." +ynh_script_progression --message="Creating a PostgreSQL database..." -# Create postgresql database +# Create PostgreSQL database db_name="${app}_production" db_user=$app db_pwd=$(ynh_string_random --length=30) @@ -269,13 +268,14 @@ ynh_systemd_action --service_name=${app}-streaming --action="start" --log_path=s #================================================= # SETUP SSOWAT #================================================= -ynh_script_progression --message="Configuring SSOwat..." +ynh_script_progression --message="Configuring permissions..." # Make app public if necessary if [ $is_public -eq 1 ] then - # unprotected_uris allows SSO credentials to be passed anyway. - ynh_app_setting_set --app=$app --key=unprotected_uris --value="/" + # Everyone can access the app. + # The "main" permission is automatically created before the install script. + ynh_permission_update --permission="main" --add="visitors" fi #================================================= diff --git a/scripts/remove b/scripts/remove index 9fac8f2..46a78ab 100644 --- a/scripts/remove +++ b/scripts/remove @@ -20,7 +20,7 @@ app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get --app=$app --key=domain) db_name=$(ynh_app_setting_get --app=$app --key=db_name) -db_user=$app +db_user=$db_name final_path=$(ynh_app_setting_get --app=$app --key=final_path) #================================================= @@ -32,19 +32,19 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path) # Remove the service from the list of services known by Yunohost (added from `yunohost service add`) if ynh_exec_warn_less yunohost service status "$app-web" >/dev/null then - ynh_script_progression --message="Removing $app-web service..." + ynh_script_progression --message="Removing $app-web service integration..." yunohost service remove "$app-web" fi if ynh_exec_warn_less yunohost service status "$app-sidekiq" >/dev/null then - ynh_script_progression --message="Removing $app-sidekiq service..." + ynh_script_progression --message="Removing $app-sidekiq service integration..." yunohost service remove "$app-sidekiq" fi if ynh_exec_warn_less yunohost service status "$app-streaming" >/dev/null then - ynh_script_progression --message="Removing $app-streaming service..." + ynh_script_progression --message="Removing $app-streaming service integration..." yunohost service remove "$app-streaming" fi diff --git a/scripts/restore b/scripts/restore index 84610eb..aef19ad 100644 --- a/scripts/restore +++ b/scripts/restore @@ -15,7 +15,6 @@ source /usr/share/yunohost/helpers #================================================= # MANAGE SCRIPT FAILURE #================================================= -ynh_script_progression --message="Managing script failure..." ynh_clean_setup () { ynh_clean_check_starting @@ -34,7 +33,7 @@ domain=$(ynh_app_setting_get --app=$app --key=domain) path_url=$(ynh_app_setting_get --app=$app --key=path) final_path=$(ynh_app_setting_get --app=$app --key=final_path) db_name=$(ynh_app_setting_get --app=$app --key=db_name) -db_user=$app +db_user=$db_name db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) #================================================= @@ -135,7 +134,7 @@ ynh_script_progression --message="Restoring the systemd configuration..." ynh_restore_file --origin_path="/etc/systemd/system/$app-web.service" ynh_restore_file --origin_path="/etc/systemd/system/$app-sidekiq.service" ynh_restore_file --origin_path="/etc/systemd/system/$app-streaming.service" -systemctl enable "$app-web" "$app-sidekiq" "$app-streaming" +systemctl enable "$app-web" "$app-sidekiq" "$app-streaming" --quiet #================================================= # INTEGRATE SERVICE IN YUNOHOST @@ -167,7 +166,7 @@ ynh_restore_file --origin_path="/etc/cron.d/$app" #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading nginx web server..." +ynh_script_progression --message="Reloading NGINX web server..." ynh_systemd_action --service_name=nginx --action=reload diff --git a/scripts/upgrade b/scripts/upgrade index a045f46..8ab0fb5 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -37,6 +37,8 @@ otp_secret=$(ynh_app_setting_get --app=$app --key=otp_secret) vapid_private_key=$(ynh_app_setting_get --app=$app --key=vapid_private_key) vapid_public_key=$(ynh_app_setting_get --app=$app --key=vapid_public_key) +config="$final_path/live/.env.production" + #================================================= # CHECK VERSION #================================================= @@ -49,39 +51,27 @@ upgrade_type=$(ynh_check_app_version_changed) #================================================= ynh_script_progression --message="Ensuring downward compatibility..." -config="$final_path/live/.env.production" -# If db_name doesn't exist, create it -if [ -z "$db_name" ]; then - db_name="${app}_production" - ynh_app_setting_set --app=$app --key=db_name --value=$db_name +# Cleaning legacy permissions +if ynh_legacy_permissions_exists; then + ynh_legacy_permissions_delete_all + + ynh_app_setting_delete --app=$app --key=is_public fi -# If final_path doesn't exist, create it -if [ -z "$final_path" ]; then - final_path=/var/www/$app - ynh_app_setting_set --app=$app --key=final_path --value=$final_path -fi - -# Check if admin is not null -if [[ "$admin" = "" || "$language" = "" ]]; then - echo "Unable to upgrade, please contact support" - ynh_die -fi - -# If port_web doesn't exist, create it, need for old install +# If port_web doesn't exist, create it, needed for old install if [[ -z "$port_web" ]]; then port_web=3000 ynh_app_setting_set --app=$app --key=port_web --value=$port_web fi -# If port_web doesn't exist, create it, need for old install +# If port_web doesn't exist, create it, needed for old install if [[ -z "$port_stream" ]]; then port_stream=4000 ynh_app_setting_set --app=$app --key=port_stream --value=$port_stream fi -# If db_pwd doesn't exist, create it, need for old install +# If db_pwd doesn't exist, create it, needed for old install if [[ -z "$db_pwd" ]]; then db_pwd=$(ynh_string_random) ynh_app_setting_set --app=$app --key=db_pwd --value=$db_pwd @@ -143,18 +133,6 @@ ynh_clean_setup () { # Exit if an error occurs during the execution of the script ynh_abort_if_errors -#================================================= -# CHECK THE PATH -#================================================= - -# Normalize the URL path syntax -# N.B. : this is for app installations before YunoHost 2.7 -# where this value might be something like /foo/ or foo/ -# instead of /foo .... -# If nobody installed your app before 2.7, then you may -# safely remove this line -path_url=$(ynh_normalize_url_path --path_url=$path_url) - #================================================= # STANDARD UPGRADE STEPS #================================================= @@ -201,6 +179,7 @@ fi #================================================= ynh_script_progression --message="Upgrading nginx web server configuration..." +# Create a dedicated NGINX config ynh_add_nginx_config 'port_web port_stream' #================================================= @@ -315,15 +294,6 @@ ynh_add_systemd_config --service="$app-web" --template="mastodon-web.service" -- ynh_add_systemd_config --service="$app-sidekiq" --template="mastodon-sidekiq.service" --others_var="RBENV_ROOT" ynh_add_systemd_config --service="$app-streaming" --template="mastodon-streaming.service" --others_var="port_stream ynh_node_load_PATH ynh_node" -#================================================= -# INTEGRATE SERVICE IN YUNOHOST -#================================================= -ynh_script_progression --message="Integrating service in YunoHost..." - -yunohost service add "$app-web" --description "$app web service" --log_type "systemd" -yunohost service add "$app-sidekiq" --description "$app sidekiq service" --log_type "systemd" -yunohost service add "$app-streaming" --description "$app streaming service" --log_type "systemd" - #================================================= # GENERIC FINALIZATION #================================================= @@ -335,16 +305,13 @@ ynh_script_progression --message="Securing files and directories..." chown -R $app: $final_path #================================================= -# SETUP SSOWAT +# INTEGRATE SERVICE IN YUNOHOST #================================================= -ynh_script_progression --message="Upgrading SSOwat configuration..." +ynh_script_progression --message="Integrating service in YunoHost..." -# Make app public if necessary -if [ $is_public -eq 1 ] -then - # unprotected_uris allows SSO credentials to be passed anyway - ynh_app_setting_set --app=$app --key=unprotected_uris --value="/" -fi +yunohost service add "$app-web" --description "$app web service" --log_type "systemd" +yunohost service add "$app-sidekiq" --description "$app sidekiq service" --log_type "systemd" +yunohost service add "$app-streaming" --description "$app streaming service" --log_type "systemd" #================================================= # START SYSTEMD SERVICE From d7936c0e110f2cb14aa387100b6978b827046969 Mon Sep 17 00:00:00 2001 From: yalh76 Date: Wed, 17 Feb 2021 19:47:47 +0100 Subject: [PATCH 06/14] Update manifest.json --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index 1fc7555..f6771cc 100644 --- a/manifest.json +++ b/manifest.json @@ -23,7 +23,7 @@ } ], "requirements": { - "yunohost": ">= 4.0" + "yunohost": ">= 4.1.3" }, "multi_instance": true, "services": [ From 057a2804247cc396a224df4b80427d3c9f7fe636 Mon Sep 17 00:00:00 2001 From: yalh76 Date: Wed, 17 Feb 2021 19:56:04 +0100 Subject: [PATCH 07/14] Create issue_template.md --- issue_template.md | 55 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 issue_template.md diff --git a/issue_template.md b/issue_template.md new file mode 100644 index 0000000..c6c9254 --- /dev/null +++ b/issue_template.md @@ -0,0 +1,55 @@ +--- +name: Bug report +about: When creating a bug report, please use the following template to provide all the relevant information and help debugging efficiently. + +--- + +**How to post a meaningful bug report** +1. *Read this whole template first.* +2. *Determine if you are on the right place:* + - *If you were performing an action on the app from the webadmin or the CLI (install, update, backup, restore, change_url...), you are on the right place!* + - *Otherwise, the issue may be due to Mastodon itself. Refer to its documentation or repository for help.* + - *When in doubt, post here and we will figure it out together.* +3. *Delete the italic comments as you write over them below, and remove this guide.* +--- + +### Describe the bug + +*A clear and concise description of what the bug is.* + +### Context + +- Hardware: *VPS bought online / Old laptop or computer / Raspberry Pi at home / Internet Cube with VPN / Other ARM board / ...* +- YunoHost version: x.x.x +- I have access to my server: *Through SSH | through the webadmin | direct access via keyboard / screen | ...* +- Are you in a special context or did you perform some particular tweaking on your YunoHost instance?: *no / yes* + - If yes, please explain: +- Using, or trying to install package version/branch: +- If upgrading, current package version: *can be found in the admin, or with `yunohost app info $app_id`* + +### Steps to reproduce + +- *If you performed a command from the CLI, the command itself is enough. For example:* + ```sh + sudo yunohost app install mastodon + ``` +- *If you used the webadmin, please perform the equivalent command from the CLI first.* +- *If the error occurs in your browser, explain what you did:* + 1. *Go to '...'* + 2. *Click on '...'* + 3. *Scroll down to '...'* + 4. *See error* + +### Expected behavior + +*A clear and concise description of what you expected to happen. You can remove this section if the command above is enough to understand your intent.* + +### Logs + +*When an operation fails, YunoHost provides a simple way to share the logs.* +- *In the webadmin, the error message contains a link to the relevant log page. On that page, you will be able to 'Share with Yunopaste'. If you missed it, the logs of previous operations are also available under Tools > Logs.* +- *In command line, the command to share the logs is displayed at the end of the operation and looks like `yunohost log display [log name] --share`. If you missed it, you can find the log ID of a previous operation using `yunohost log list`.* + +*After sharing the log, please copypaste directly the link provided by YunoHost (to help readability, no need to copypaste the entire content of the log here, just the link is enough...)* + +*If applicable and useful, add screenshots to help explain your problem.* From c2784f1c3188f679c18f868f208d22ee2bfd4dea Mon Sep 17 00:00:00 2001 From: yalh76 Date: Wed, 17 Feb 2021 19:57:15 +0100 Subject: [PATCH 08/14] Update upgrade --- scripts/upgrade | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/upgrade b/scripts/upgrade index 8ab0fb5..4b0c4ae 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -21,7 +21,6 @@ app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get --app=$app --key=domain) path_url=$(ynh_app_setting_get --app=$app --key=path) admin=$(ynh_app_setting_get --app=$app --key=admin) -is_public=$(ynh_app_setting_get --app=$app --key=is_public) 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) From 162a807f5ba1c2ce3e3f7420dc7ba1bdc906537a Mon Sep 17 00:00:00 2001 From: yalh76 Date: Sun, 21 Feb 2021 22:27:05 +0100 Subject: [PATCH 09/14] Using option '--log_type systemd' with 'yunohost service add' is not relevant anymore --- scripts/install | 6 +++--- scripts/restore | 6 +++--- scripts/upgrade | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/scripts/install b/scripts/install index 8f4ca05..a7ee1cb 100644 --- a/scripts/install +++ b/scripts/install @@ -252,9 +252,9 @@ chown -R "$app": "$final_path" #================================================= ynh_script_progression --message="Integrating service in YunoHost..." -yunohost service add "$app-web" --description "$app web service" --log_type "systemd" -yunohost service add "$app-sidekiq" --description "$app sidekiq service" --log_type "systemd" -yunohost service add "$app-streaming" --description "$app streaming service" --log_type "systemd" +yunohost service add "$app-web" --description "$app web service" +yunohost service add "$app-sidekiq" --description "$app sidekiq service" +yunohost service add "$app-streaming" --description "$app streaming service" #================================================= # START SYSTEMD SERVICE diff --git a/scripts/restore b/scripts/restore index aef19ad..11729d4 100644 --- a/scripts/restore +++ b/scripts/restore @@ -141,9 +141,9 @@ systemctl enable "$app-web" "$app-sidekiq" "$app-streaming" --quiet #================================================= ynh_script_progression --message="Integrating service in YunoHost..." -yunohost service add "$app-web" --description "$app web service" --log_type "systemd" -yunohost service add "$app-sidekiq" --description "$app sidekiq service" --log_type "systemd" -yunohost service add "$app-streaming" --description "$app streaming service" --log_type "systemd" +yunohost service add "$app-web" --description "$app web service" +yunohost service add "$app-sidekiq" --description "$app sidekiq service" +yunohost service add "$app-streaming" --description "$app streaming service" #================================================= # START SYSTEMD SERVICE diff --git a/scripts/upgrade b/scripts/upgrade index 4b0c4ae..cd84ac8 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -308,9 +308,9 @@ chown -R $app: $final_path #================================================= ynh_script_progression --message="Integrating service in YunoHost..." -yunohost service add "$app-web" --description "$app web service" --log_type "systemd" -yunohost service add "$app-sidekiq" --description "$app sidekiq service" --log_type "systemd" -yunohost service add "$app-streaming" --description "$app streaming service" --log_type "systemd" +yunohost service add "$app-web" --description "$app web service" +yunohost service add "$app-sidekiq" --description "$app sidekiq service" +yunohost service add "$app-streaming" --description "$app streaming service" #================================================= # START SYSTEMD SERVICE From 1859c63f83e4d7b3d267226f48e72d0b7a967b0b Mon Sep 17 00:00:00 2001 From: yalh76 Date: Sun, 21 Feb 2021 22:27:47 +0100 Subject: [PATCH 10/14] It looks like you forgot to enable setup_private test in check_process ? --- check_process | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/check_process b/check_process index a5f7d53..72f8049 100644 --- a/check_process +++ b/check_process @@ -9,7 +9,7 @@ setup_sub_dir=0 setup_root=1 setup_nourl=0 - setup_private=0 + setup_private=1 setup_public=1 upgrade=1 # 3.1.2~ynh2 From 88969d7b7ad4e3581599f748ea3b61dfc51c19a5 Mon Sep 17 00:00:00 2001 From: yalh76 Date: Tue, 23 Feb 2021 04:14:27 +0100 Subject: [PATCH 11/14] Fix bad database user name --- scripts/remove | 2 +- scripts/restore | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/remove b/scripts/remove index 46a78ab..0c71d04 100644 --- a/scripts/remove +++ b/scripts/remove @@ -20,7 +20,7 @@ app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get --app=$app --key=domain) db_name=$(ynh_app_setting_get --app=$app --key=db_name) -db_user=$db_name +db_user=$app final_path=$(ynh_app_setting_get --app=$app --key=final_path) #================================================= diff --git a/scripts/restore b/scripts/restore index 11729d4..e51126f 100644 --- a/scripts/restore +++ b/scripts/restore @@ -33,7 +33,7 @@ domain=$(ynh_app_setting_get --app=$app --key=domain) path_url=$(ynh_app_setting_get --app=$app --key=path) final_path=$(ynh_app_setting_get --app=$app --key=final_path) db_name=$(ynh_app_setting_get --app=$app --key=db_name) -db_user=$db_name +db_user=$app db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) #================================================= From b2af9c3f5ec4be1fbd10a9f14e7889aefec6b081 Mon Sep 17 00:00:00 2001 From: yalh76 Date: Wed, 24 Feb 2021 06:35:45 +0100 Subject: [PATCH 12/14] Fix ynh_install_ruby --- conf/mastodon-sidekiq.service | 2 +- conf/mastodon-web.service | 2 +- scripts/install | 16 ++--- scripts/upgrade | 12 ++-- scripts/ynh_install_ruby__2 | 122 +++++++++++++++++++++++----------- 5 files changed, 100 insertions(+), 54 deletions(-) diff --git a/conf/mastodon-sidekiq.service b/conf/mastodon-sidekiq.service index 7031e63..f0948a6 100644 --- a/conf/mastodon-sidekiq.service +++ b/conf/mastodon-sidekiq.service @@ -9,7 +9,7 @@ WorkingDirectory=__FINALPATH__/live Environment="RAILS_ENV=production" Environment="DB_POOL=25" Environment="MALLOC_ARENA_MAX=2" -ExecStart=__RBENV_ROOT__/shims/bundle exec sidekiq -c 25 +ExecStart=/opt/rbenv/versions/__APP__/bin/bundle exec sidekiq -c 25 TimeoutSec=15 Restart=always StandardError=syslog diff --git a/conf/mastodon-web.service b/conf/mastodon-web.service index 1f5b6be..33e3feb 100644 --- a/conf/mastodon-web.service +++ b/conf/mastodon-web.service @@ -8,7 +8,7 @@ User=__APP__ WorkingDirectory=__FINALPATH__/live Environment="RAILS_ENV=production" Environment="PORT=__PORT_WEB__" -ExecStart=__RBENV_ROOT__/shims/bundle exec puma -C config/puma.rb +ExecStart=/opt/rbenv/versions/__APP__/bin/bundle exec puma -C config/puma.rb ExecReload=/bin/kill -SIGUSR1 $MAINPID TimeoutSec=15 Restart=always diff --git a/scripts/install b/scripts/install index a7ee1cb..368dcad 100644 --- a/scripts/install +++ b/scripts/install @@ -144,8 +144,8 @@ ynh_script_progression --message="Installing Ruby..." ynh_install_ruby --ruby_version=$RUBY_VERSION pushd "$final_path/live" - gem update --system - gem install bundler:$BUNDLER_VERSION --no-document + /opt/rbenv/versions/$app/bin/gem update --system + /opt/rbenv/versions/$app/bin/gem install bundler:$BUNDLER_VERSION --no-document popd #================================================= @@ -188,14 +188,14 @@ chown -R "$app": "$final_path" pushd "$final_path/live" ynh_use_nodejs - sudo -u $app PATH=$PATH $RBENV_ROOT/shims/bundle config deployment 'true' - sudo -u $app PATH=$PATH $RBENV_ROOT/shims/bundle config without 'development test' - sudo -u $app PATH=$PATH $RBENV_ROOT/shims/bundle install -j$(getconf _NPROCESSORS_ONLN) + sudo -u $app PATH=$PATH /opt/rbenv/versions/$app/bin/bundle config deployment 'true' + sudo -u $app PATH=$PATH /opt/rbenv/versions/$app/bin/bundle config without 'development test' + sudo -u $app PATH=$PATH /opt/rbenv/versions/$app/bin/bundle install -j$(getconf _NPROCESSORS_ONLN) sudo -u $app PATH=$PATH yarn install --pure-lockfile echo "SAFETY_ASSURED=1">> $config - sudo -u $app RAILS_ENV=production PATH=$PATH bin/bundle exec rails db:setup --quiet - sudo -u $app RAILS_ENV=production PATH=$PATH bin/bundle exec rails assets:precompile --quiet - sudo -u $app RAILS_ENV=production PATH=$PATH bin/bundle exec rake mastodon:webpush:generate_vapid_key > key.txt + sudo -u $app RAILS_ENV=production PATH=$PATH /opt/rbenv/versions/$app/bin/bundle exec rails db:setup --quiet + sudo -u $app RAILS_ENV=production PATH=$PATH /opt/rbenv/versions/$app/bin/bundle exec rails assets:precompile --quiet + sudo -u $app RAILS_ENV=production PATH=$PATH /opt/rbenv/versions/$app/bin/bundle exec rake mastodon:webpush:generate_vapid_key > key.txt sudo -u $app RAILS_ENV=production PATH=$PATH bin/tootctl accounts create "$admin" --email="$admin_mail" --confirmed --role=admin > /dev/null sudo -u $app RAILS_ENV=production PATH=$PATH bin/tootctl accounts modify "$admin" --approve popd diff --git a/scripts/upgrade b/scripts/upgrade index cd84ac8..dcbe9b0 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -262,13 +262,13 @@ chown -R "$app": "$final_path" pushd "$final_path/live" ynh_use_nodejs - sudo -u $app PATH=$PATH $RBENV_ROOT/shims/bundle config deployment 'true' - sudo -u $app PATH=$PATH $RBENV_ROOT/shims/bundle config without 'development test' - sudo -u $app PATH=$PATH $RBENV_ROOT/shims/bundle install -j$(getconf _NPROCESSORS_ONLN) + sudo -u $app PATH=$PATH /opt/rbenv/versions/$app/bin/bundle config deployment 'true' + sudo -u $app PATH=$PATH /opt/rbenv/versions/$app/bin/bundle config without 'development test' + sudo -u $app PATH=$PATH /opt/rbenv/versions/$app/bin/bundle install -j$(getconf _NPROCESSORS_ONLN) sudo -u $app PATH=$PATH yarn install --pure-lockfile - sudo -u $app RAILS_ENV=production PATH=$PATH bin/bundle exec rails assets:clean - sudo -u $app RAILS_ENV=production PATH=$PATH bin/bundle exec rails assets:precompile - sudo -u $app RAILS_ENV=production PATH=$PATH bin/bundle exec rails db:migrate + sudo -u $app RAILS_ENV=production PATH=$PATH /opt/rbenv/versions/$app/bin/bundle exec rails assets:clean + sudo -u $app RAILS_ENV=production PATH=$PATH /opt/rbenv/versions/$app/bin/bundle exec rails assets:precompile + sudo -u $app RAILS_ENV=production PATH=$PATH /opt/rbenv/versions/$app/bin/bundle exec rails db:migrate sudo -u $app RAILS_ENV=production PATH=$PATH bin/tootctl cache clear popd diff --git a/scripts/ynh_install_ruby__2 b/scripts/ynh_install_ruby__2 index 74de90e..e885b96 100644 --- a/scripts/ynh_install_ruby__2 +++ b/scripts/ynh_install_ruby__2 @@ -2,30 +2,41 @@ # Need also the helper https://github.com/YunoHost-Apps/Experimental_helpers/blob/master/ynh_handle_getopts_args/ynh_handle_getopts_args +rbenv_version=1.1.2 +rbenv_rubybuild_version=20201225 +rbenv_aliases_version=1.1.0 rbenv_install_dir="/opt/rbenv" # RBENV_ROOT is the directory of rbenv, it needs to be loaded as a environment variable. export RBENV_ROOT="$rbenv_install_dir" -# Install ruby version management +# Install Ruby Version Management # # [internal] # # usage: ynh_install_rbenv ynh_install_rbenv () { - echo "Installation of rbenv - ruby version management" >&2 + ynh_print_info --message="Installation of rbenv - Ruby Version Management - rbenv-${rbenv_version}/ruby-build-${rbenv_rubybuild_version}" + # Build an app.src for rbenv mkdir -p "../conf" - echo "SOURCE_URL=https://github.com/rbenv/rbenv/archive/v1.1.2.tar.gz + echo "SOURCE_URL=https://github.com/rbenv/rbenv/archive/v${rbenv_version}.tar.gz SOURCE_SUM=80ad89ffe04c0b481503bd375f05c212bbc7d44ef5f5e649e0acdf25eba86736" > "../conf/rbenv.src" # Download and extract rbenv - ynh_setup_source "$rbenv_install_dir" rbenv + ynh_setup_source --dest_dir="$rbenv_install_dir" --source_id=rbenv # Build an app.src for ruby-build mkdir -p "../conf" - echo "SOURCE_URL=https://github.com/rbenv/ruby-build/archive/v20201225.tar.gz + echo "SOURCE_URL=https://github.com/rbenv/ruby-build/archive/v${rbenv_rubybuild_version}.tar.gz SOURCE_SUM=54cae123c2758e7714c66aca7ef8bc7f29cda8583891191ceb3053c6d098ecf1" > "../conf/ruby-build.src" # Download and extract ruby-build - ynh_setup_source "$rbenv_install_dir/plugins/ruby-build" ruby-build + ynh_setup_source --dest_dir="$rbenv_install_dir/plugins/ruby-build" --source_id=ruby-build + + # Build an app.src for ruby-build + mkdir -p "../conf" + echo "SOURCE_URL=https://github.com/tpope/rbenv-aliases/archive/v${rbenv_aliases_version}.tar.gz +SOURCE_SUM=12e89bc4499e85d8babac2b02bc8b66ceb0aa3f8047b26728a3eca8a6030273d" > "../conf/rbenv-aliases.src" + # Download and extract ruby-build + ynh_setup_source --dest_dir="$rbenv_install_dir/plugins/rbenv-aliases" --source_id=rbenv-aliases (cd $rbenv_install_dir ./src/configure && make -C src) @@ -36,12 +47,12 @@ if [ ! -d $rbenv_install_dir/shims ] ; then fi } -# Install a specific version of ruby +# Install a specific version of Ruby # -# ynh_install_ruby will install the version of ruby provided as argument by using rbenv. +# ynh_install_ruby will install the version of Ruby provided as argument by using rbenv. # -# rbenv (ruby version management) stores the target ruby version in a .ruby_version file created in the target folder (using rbenv local ) -# It then uses that information for every ruby user that uses rbenv provided ruby command +# rbenv (Ruby Version Management) stores the target Ruby version in a .ruby_version file created in the target folder (using rbenv local ) +# It then uses that information for every Ruby user that uses rbenv provided Ruby command # # This helper creates a /etc/profile.d/rbenv.sh that configures PATH environment for rbenv # for every LOGIN user, hence your user must have a defined shell (as opposed to /usr/sbin/nologin) @@ -51,38 +62,41 @@ fi # When not possible (e.g. in systemd service definition), please use direct path # to rbenv shims (e.g. $RBENV_ROOT/shims/bundle) # -# usage: ynh_install_ruby ruby_version user +# usage: ynh_install_ruby --ruby_version=ruby_version # | arg: -v, --ruby_version= - Version of ruby to install. -# If possible, prefer to use major version number (e.g. 8 instead of 8.10.0). -# The crontab will handle the update of minor versions when needed. ynh_install_ruby () { # Declare an array to define the options of this helper. declare -Ar args_array=( [v]=ruby_version= ) - # Use rbenv, https://github.com/rbenv/rbenv to manage the ruby versions local ruby_version # Manage arguments with getopts ynh_handle_getopts_args "$@" - # Create $rbenv_install_dir + # Store ruby_version into the config of this app + ynh_app_setting_set --app=$YNH_APP_INSTANCE_NAME --key=ruby_version --value=$ruby_version + + # Create $rbenv_install_dir if doesn't exist already mkdir -p "$rbenv_install_dir/plugins/ruby-build" + # Create the file if doesn't exist already + touch "$rbenv_install_dir/ynh_app_version" + # Load rbenv path in PATH CLEAR_PATH="$rbenv_install_dir/bin:$PATH" - # Remove /usr/local/bin in PATH in case of ruby prior installation + # Remove /usr/local/bin in PATH in case of Ruby prior installation PATH=$(echo $CLEAR_PATH | sed 's@/usr/local/bin:@@') - # Move an existing ruby binary, to avoid to block rbenv + # Move an existing Ruby binary, to avoid to block rbenv test -x /usr/bin/ruby && mv /usr/bin/ruby /usr/bin/ruby_rbenv # If rbenv is not previously setup, install it if ! type rbenv > /dev/null 2>&1 then ynh_install_rbenv - elif dpkg --compare-versions "$($rbenv_install_dir/bin/rbenv --version | cut -d" " -f2)" lt "1.1.2" + elif dpkg --compare-versions "$($rbenv_install_dir/bin/rbenv --version | cut -d" " -f2)" lt ${rbenv_version} then ynh_install_rbenv - elif dpkg --compare-versions "$($rbenv_install_dir/plugins/ruby-build/bin/ruby-build --version | cut -d" " -f2)" lt "20200520" + elif dpkg --compare-versions "$($rbenv_install_dir/plugins/ruby-build/bin/ruby-build --version | cut -d" " -f2)" lt ${rbenv_rubybuild_version} then ynh_install_rbenv fi @@ -90,57 +104,89 @@ ynh_install_ruby () { # Restore /usr/local/bin in PATH (if needed) PATH=$CLEAR_PATH - # And replace the old ruby binary + # And replace the old Ruby binary test -x /usr/bin/ruby_rbenv && mv /usr/bin/ruby_rbenv /usr/bin/ruby - # Install the requested version of ruby + # Install the requested version of Ruby + ynh_print_info --message="Installation of Ruby-"$ruby_version CONFIGURE_OPTS="--disable-install-doc --with-jemalloc" MAKE_OPTS="-j2" rbenv install --skip-existing $ruby_version - # Store the ID of this app and the version of ruby requested for it - echo "$YNH_APP_ID:$ruby_version" | tee --append "$rbenv_install_dir/ynh_app_version" + # Do not add twice the same line + if ! grep --quiet "$YNH_APP_INSTANCE_NAME:$ruby_version" "$rbenv_install_dir/ynh_app_version" + then - # Store ruby_version into the config of this app - ynh_app_setting_set $app ruby_version $ruby_version + # Remove previous version + if grep --quiet "$YNH_APP_INSTANCE_NAME:" "$rbenv_install_dir/ynh_app_version" + then + rbenv alias $YNH_APP_INSTANCE_NAME --remove + sed --in-place "/$YNH_APP_INSTANCE_NAME:/d" "$rbenv_install_dir/ynh_app_version" + fi - # Set environment for ruby users + # Store the ID of this app and the version of Ruby requested for it + echo "$YNH_APP_INSTANCE_NAME:$ruby_version" | tee --append "$rbenv_install_dir/ynh_app_version" + fi + + # Remove no more needed Ruby version + installed_ruby_version=$(rbenv versions --bare --skip-aliases | grep -Ev '/') + for installed_version in $installed_ruby_version + do + if ! grep --quiet "$installed_version" "$rbenv_install_dir/ynh_app_version" + then + ynh_print_info --message="Removing of ruby-"$installed_version + $rbenv_install_dir/bin/rbenv uninstall --force $installed_version + fi + done + + # Set environment for Ruby users echo "#rbenv export RBENV_ROOT=$rbenv_install_dir export PATH=\"$rbenv_install_dir/bin:$PATH\" eval \"\$(rbenv init -)\" #rbenv" > /etc/profile.d/rbenv.sh - # Load the right environment for the Installation + # Load the environment eval "$(rbenv init -)" (cd $final_path rbenv local $ruby_version) + + rbenv alias $YNH_APP_INSTANCE_NAME $ruby_version } -# Remove the version of ruby used by the app. +# Remove the version of Ruby used by the app. # -# This helper will check if another app uses the same version of ruby, -# if not, this version of ruby will be removed. -# If no other app uses ruby, rbenv will be also removed. +# This helper will check if another app uses the same version of Ruby, +# if not, this version of Ruby will be removed. +# If no other app uses Ruby, rbenv will be also removed. # # usage: ynh_remove_ruby ynh_remove_ruby () { - ruby_version=$(ynh_app_setting_get $app ruby_version) + local ruby_version=$(ynh_app_setting_get --app=$YNH_APP_INSTANCE_NAME --key=ruby_version) + + # Load rbenv path in PATH + CLEAR_PATH="$rbenv_install_dir/bin:$PATH" + + # Remove /usr/local/bin in PATH in case of Ruby prior installation + PATH=$(echo $CLEAR_PATH | sed 's@/usr/local/bin:@@') + +rbenv alias $YNH_APP_INSTANCE_NAME --remove # Remove the line for this app - sed --in-place "/$YNH_APP_ID:$ruby_version/d" "$rbenv_install_dir/ynh_app_version" + sed --in-place "/$YNH_APP_INSTANCE_NAME:$ruby_version/d" "$rbenv_install_dir/ynh_app_version" - # If no other app uses this version of ruby, remove it. + # If no other app uses this version of Ruby, remove it. if ! grep --quiet "$ruby_version" "$rbenv_install_dir/ynh_app_version" then + ynh_print_info --message="Removing of Ruby-"$ruby_version $rbenv_install_dir/bin/rbenv uninstall --force $ruby_version fi - # Remove rbenv environment configuration - rm /etc/profile.d/rbenv.sh - # If no other app uses rbenv, remove rbenv and dedicated group if [ ! -s "$rbenv_install_dir/ynh_app_version" ] then - ynh_secure_remove "$rbenv_install_dir" + ynh_print_info --message="Removing of rbenv" + ynh_secure_remove --file="$rbenv_install_dir" + # Remove rbenv environment configuration + rm /etc/profile.d/rbenv.sh fi } From 9691d954dc29f8d3468b8de87d934d5954320871 Mon Sep 17 00:00:00 2001 From: yalh76 Date: Wed, 24 Feb 2021 07:11:45 +0100 Subject: [PATCH 13/14] RBENV_ROOT --- conf/mastodon-sidekiq.service | 2 +- conf/mastodon-web.service | 2 +- scripts/install | 16 ++++++++-------- scripts/upgrade | 12 ++++++------ 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/conf/mastodon-sidekiq.service b/conf/mastodon-sidekiq.service index f0948a6..094813f 100644 --- a/conf/mastodon-sidekiq.service +++ b/conf/mastodon-sidekiq.service @@ -9,7 +9,7 @@ WorkingDirectory=__FINALPATH__/live Environment="RAILS_ENV=production" Environment="DB_POOL=25" Environment="MALLOC_ARENA_MAX=2" -ExecStart=/opt/rbenv/versions/__APP__/bin/bundle exec sidekiq -c 25 +ExecStart=__RBENV_ROOT__/versions/__APP__/bin/bundle exec sidekiq -c 25 TimeoutSec=15 Restart=always StandardError=syslog diff --git a/conf/mastodon-web.service b/conf/mastodon-web.service index 33e3feb..e853df5 100644 --- a/conf/mastodon-web.service +++ b/conf/mastodon-web.service @@ -8,7 +8,7 @@ User=__APP__ WorkingDirectory=__FINALPATH__/live Environment="RAILS_ENV=production" Environment="PORT=__PORT_WEB__" -ExecStart=/opt/rbenv/versions/__APP__/bin/bundle exec puma -C config/puma.rb +ExecStart=__RBENV_ROOT__/versions/__APP__/bin/bundle exec puma -C config/puma.rb ExecReload=/bin/kill -SIGUSR1 $MAINPID TimeoutSec=15 Restart=always diff --git a/scripts/install b/scripts/install index 368dcad..1447309 100644 --- a/scripts/install +++ b/scripts/install @@ -144,8 +144,8 @@ ynh_script_progression --message="Installing Ruby..." ynh_install_ruby --ruby_version=$RUBY_VERSION pushd "$final_path/live" - /opt/rbenv/versions/$app/bin/gem update --system - /opt/rbenv/versions/$app/bin/gem install bundler:$BUNDLER_VERSION --no-document + $RBENV_ROOT/versions/$app/bin/gem update --system + $RBENV_ROOT/versions/$app/bin/gem install bundler:$BUNDLER_VERSION --no-document popd #================================================= @@ -188,14 +188,14 @@ chown -R "$app": "$final_path" pushd "$final_path/live" ynh_use_nodejs - sudo -u $app PATH=$PATH /opt/rbenv/versions/$app/bin/bundle config deployment 'true' - sudo -u $app PATH=$PATH /opt/rbenv/versions/$app/bin/bundle config without 'development test' - sudo -u $app PATH=$PATH /opt/rbenv/versions/$app/bin/bundle install -j$(getconf _NPROCESSORS_ONLN) + sudo -u $app PATH=$PATH $RBENV_ROOT/versions/$app/bin/bundle config deployment 'true' + sudo -u $app PATH=$PATH $RBENV_ROOT/versions/$app/bin/bundle config without 'development test' + sudo -u $app PATH=$PATH $RBENV_ROOT/versions/$app/bin/bundle install -j$(getconf _NPROCESSORS_ONLN) sudo -u $app PATH=$PATH yarn install --pure-lockfile echo "SAFETY_ASSURED=1">> $config - sudo -u $app RAILS_ENV=production PATH=$PATH /opt/rbenv/versions/$app/bin/bundle exec rails db:setup --quiet - sudo -u $app RAILS_ENV=production PATH=$PATH /opt/rbenv/versions/$app/bin/bundle exec rails assets:precompile --quiet - sudo -u $app RAILS_ENV=production PATH=$PATH /opt/rbenv/versions/$app/bin/bundle exec rake mastodon:webpush:generate_vapid_key > key.txt + sudo -u $app RAILS_ENV=production PATH=$PATH $RBENV_ROOT/versions/$app/bin/bundle exec rails db:setup --quiet + sudo -u $app RAILS_ENV=production PATH=$PATH $RBENV_ROOT/versions/$app/bin/bundle exec rails assets:precompile --quiet + sudo -u $app RAILS_ENV=production PATH=$PATH $RBENV_ROOT/versions/$app/bin/bundle exec rake mastodon:webpush:generate_vapid_key > key.txt sudo -u $app RAILS_ENV=production PATH=$PATH bin/tootctl accounts create "$admin" --email="$admin_mail" --confirmed --role=admin > /dev/null sudo -u $app RAILS_ENV=production PATH=$PATH bin/tootctl accounts modify "$admin" --approve popd diff --git a/scripts/upgrade b/scripts/upgrade index dcbe9b0..6f14af2 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -262,13 +262,13 @@ chown -R "$app": "$final_path" pushd "$final_path/live" ynh_use_nodejs - sudo -u $app PATH=$PATH /opt/rbenv/versions/$app/bin/bundle config deployment 'true' - sudo -u $app PATH=$PATH /opt/rbenv/versions/$app/bin/bundle config without 'development test' - sudo -u $app PATH=$PATH /opt/rbenv/versions/$app/bin/bundle install -j$(getconf _NPROCESSORS_ONLN) + sudo -u $app PATH=$PATH $RBENV_ROOT/versions/$app/bin/bundle config deployment 'true' + sudo -u $app PATH=$PATH $RBENV_ROOT/versions/$app/bin/bundle config without 'development test' + sudo -u $app PATH=$PATH $RBENV_ROOT/versions/$app/bin/bundle install -j$(getconf _NPROCESSORS_ONLN) sudo -u $app PATH=$PATH yarn install --pure-lockfile - sudo -u $app RAILS_ENV=production PATH=$PATH /opt/rbenv/versions/$app/bin/bundle exec rails assets:clean - sudo -u $app RAILS_ENV=production PATH=$PATH /opt/rbenv/versions/$app/bin/bundle exec rails assets:precompile - sudo -u $app RAILS_ENV=production PATH=$PATH /opt/rbenv/versions/$app/bin/bundle exec rails db:migrate + sudo -u $app RAILS_ENV=production PATH=$PATH $RBENV_ROOT/versions/$app/bin/bundle exec rails assets:clean + sudo -u $app RAILS_ENV=production PATH=$PATH $RBENV_ROOT/versions/$app/bin/bundle exec rails assets:precompile + sudo -u $app RAILS_ENV=production PATH=$PATH $RBENV_ROOT/versions/$app/bin/bundle exec rails db:migrate sudo -u $app RAILS_ENV=production PATH=$PATH bin/tootctl cache clear popd From 867c83b3f8e768cf110b8d9f1426a2751a88339a Mon Sep 17 00:00:00 2001 From: yalh76 Date: Wed, 24 Feb 2021 07:47:09 +0100 Subject: [PATCH 14/14] Fix rbenv alias not existing in previous version --- scripts/ynh_install_ruby__2 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/ynh_install_ruby__2 b/scripts/ynh_install_ruby__2 index e885b96..1d9bf8d 100644 --- a/scripts/ynh_install_ruby__2 +++ b/scripts/ynh_install_ruby__2 @@ -118,7 +118,10 @@ ynh_install_ruby () { # Remove previous version if grep --quiet "$YNH_APP_INSTANCE_NAME:" "$rbenv_install_dir/ynh_app_version" then - rbenv alias $YNH_APP_INSTANCE_NAME --remove + if grep --quiet "$YNH_APP_INSTANCE_NAME" $(rbenv alias --list) + then + rbenv alias $YNH_APP_INSTANCE_NAME --remove + fi sed --in-place "/$YNH_APP_INSTANCE_NAME:/d" "$rbenv_install_dir/ynh_app_version" fi