From e2f3d3d010afc99432ff0c83359f55b60eafa1d1 Mon Sep 17 00:00:00 2001
From: Armand Bahi <armand.bahi@veremes.com>
Date: Thu, 22 Mar 2018 15:36:48 +0100
Subject: [PATCH] =?UTF-8?q?ajout=20mise=20=C3=A0=20jour=20auto=20de=20la?=
 =?UTF-8?q?=20doc?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 automaj_doc/automaj_doc.md                    | 21 +++++++++++++
 automaj_doc/update_repos_submodules.sh        | 30 +++++++++++++++++++
 .../update_repos_submodules_as_veremes.sh     | 18 +++++++++++
 automaj_doc/update_submodules.php             |  8 +++++
 4 files changed, 77 insertions(+)
 create mode 100644 automaj_doc/automaj_doc.md
 create mode 100644 automaj_doc/update_repos_submodules.sh
 create mode 100644 automaj_doc/update_repos_submodules_as_veremes.sh
 create mode 100644 automaj_doc/update_submodules.php

diff --git a/automaj_doc/automaj_doc.md b/automaj_doc/automaj_doc.md
new file mode 100644
index 0000000..1ad5edb
--- /dev/null
+++ b/automaj_doc/automaj_doc.md
@@ -0,0 +1,21 @@
+# Mise à jour automatique de la documentation
+
+## Objetctif
+
+L'objectif est la mise à jour automatique est continue de l'ensemble des sous-modules des différents dépôts liés à la documentation Veremes.
+
+Pour ce faire il faudra créer un serveur linux sur lequel il faudra installer Git et GitLab, pour nous ce sera vm09.veremes.net
+
+Le but est de placer sur chacun des dépôts utilisés comme sous-module (ex: doc_module_vitis, doc_module_anc) un web-hook vers le serveur web-hooks (ex: http://vm09.veremes.net:81/webhooks/update_submodules.php).
+
+Lors de chaque modification sur le sous dépôt, gitlab envéra une requête POST à l'URL du serveur web-hook, ce la va déclencher le script update_repos_submodules_as_veremes.sh qui va mettre à jour localement les différents dépôts, mettre à jour leurs sous-modules et commiter le tout avec le compte Veremes.
+
+
+
+## Dépot local
+
+Il faut dans une première partie re-créer sur la serveur dans un dossier en lecture/écriture /var/tmp_git_repos/ dans lequel il faudra placer les fichiers update_repos_submodules.sh et update_repos_submodules_as_veremes.sh et leur donner des droits en execution uniquement.
+
+## Serveur web-hooks
+
+Il faudra installer un apache php à câbler sur le port 81 puis dans le répertoire www/html créer un répertoire webhooks et y mettre le fichier update_submodules.php
diff --git a/automaj_doc/update_repos_submodules.sh b/automaj_doc/update_repos_submodules.sh
new file mode 100644
index 0000000..2333afa
--- /dev/null
+++ b/automaj_doc/update_repos_submodules.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+#
+# Scirpt permettant de mettre à jour automatiquement les sous-modules des applications contenant ce module
+#
+
+for repo in `echo doc_app_vmap doc_app_gtf doc_app_calimap doc_app_extraction doc_app_myrecepisse doc_app_risdict doc_app_sigrando`; do
+    echo "---- Clone ${repo} ----"
+    if [ ! -d "$repo" ]; then
+        git clone "git@vm09.veremes.net:Documentation/${repo}.git"
+    fi
+    if [ -d "$repo" ]; then
+        if [ -d "$repo/.git" ]; then
+              cd ${repo}
+              echo "-- config email --"
+              env -i git config user.email "gitlab@veremes.com"
+              env -i git config user.name "Veremes"
+              echo "-- git pull --"
+              env -i git pull
+              echo "-- git submodule update --"
+              env -i git submodule update --recursive --remote --init
+              echo "-- git add --"
+              env -i git add -A
+              echo "-- git commit --"
+              env -i git commit -a -m "update submodules"
+              echo "-- git push --"
+              env -i git push
+              cd ..
+        fi
+    fi
+done
diff --git a/automaj_doc/update_repos_submodules_as_veremes.sh b/automaj_doc/update_repos_submodules_as_veremes.sh
new file mode 100644
index 0000000..af467ba
--- /dev/null
+++ b/automaj_doc/update_repos_submodules_as_veremes.sh
@@ -0,0 +1,18 @@
+#!/usr/bin/expect -f
+set password "veremes**gitlab"
+
+spawn ./update_repos_submodules.sh
+
+set timeout 600
+expect {
+    -nocase "*?Enter passphrase*" {
+        send "$password\r"
+        exp_continue
+    }
+    -nocase "*?(yes/no*" {
+        send "yes\r"
+        exp_continue
+    }
+}
+
+expect eof
diff --git a/automaj_doc/update_submodules.php b/automaj_doc/update_submodules.php
new file mode 100644
index 0000000..bbae515
--- /dev/null
+++ b/automaj_doc/update_submodules.php
@@ -0,0 +1,8 @@
+<?php
+        chdir("/var/tmp_git_repos/");
+        $aOutput = array();
+        exec("./update_repos_submodules_as_veremes.sh", $aOutput);
+        foreach ($aOutput as $key => $value) {
+                echo('<div>' . $value . '</div>');
+        }
+?>
-- 
GitLab