From 7ca1714a78e8d78e4302b32575d920a173c8205c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Guillaume=20Perr=C3=A9al?= <guillaume.perreal@irstea.fr>
Date: Mon, 18 Jan 2021 16:53:39 +0100
Subject: [PATCH] =?UTF-8?q?systemd:=20d=C3=A9clare=20l'unit=C3=A9=20dans?=
 =?UTF-8?q?=20"current"=20pour=20=C3=A9viter=20les=20probl=C3=A8mes=20en?=
 =?UTF-8?q?=20cas=20de=20rollback.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 recipe/systemd.php | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/recipe/systemd.php b/recipe/systemd.php
index 45f1d5e..11a450c 100644
--- a/recipe/systemd.php
+++ b/recipe/systemd.php
@@ -64,22 +64,21 @@ set('worker.service.name', '{{ application }}-worker');
 // Nom de l'unité systemd
 set('worker.service.unit', '{{ worker.service.name }}.service');
 
-// Chemin vers le fichier du service
-set('worker.service.path', '{{ release_path }}/{{ bin_dir }}/{{ worker.service.unit }}');
+// Chemin vers le fichier du service de cette release
+set('worker.service.path', '{{ bin_dir }}/{{ worker.service.unit }}');
 
 desc('Generate the worker definition');
-task('worker:service:generate', "{{ worker.sudo }}/bin/cat >'{{ worker.service.path }}' <<'EOF'\n{{ worker.service.parsed }}\nEOF\n");
+task('worker:service:generate', "/bin/cat >'{{ worker.service.path }}' <<'EOF'\n{{ worker.service.parsed }}\nEOF\n");
 
 desc('Reload the worker definition');
 task('worker:service:reload', function (): void {
-    // Désactive l'unité si elle existe déjà ; elle a peut-être été définie par une autre release
-    if (test('{{ worker.systemctl }} is-enabled {{ worker.service.unit }}')) {
-        run('{{ worker.systemctl }} disable {{ worker.service.unit }}');
+    if (run('{{ worker.systemctl }} is-enabled {{ worker.service.unit }}') === 'enabled') {
+        // Recharge toutes les unités
+        run('{{ worker.systemctl }} daemon-reload');
+    } else {
+        // Installe l'unité
+        run('{{ worker.systemctl }} enable --force {{ deploy_path }}/current/{{ worker.service.path }}');
     }
-    // Force un rechargement de la config de systemd
-    run('{{ worker.systemctl }} daemon-reload');
-    // Active l'unité dans sa version actuelle
-    run('{{ worker.systemctl }} enable {{ worker.service.path }}');
 });
 
 desc('Start the worker');
-- 
GitLab