From 5a3e9e3f181d5cb430bb102f45ceb260e9e7b9f7 Mon Sep 17 00:00:00 2001
From: Olivier Maury <Olivier.Maury@inrae.fr>
Date: Wed, 10 Jan 2024 10:54:56 +0100
Subject: [PATCH 1/8] Ajouter .gitlab-ci.yml. refs #15

---
 .gitlab-ci.yml | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 86 insertions(+)
 create mode 100644 .gitlab-ci.yml

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..e677ee3
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,86 @@
+variables:
+  MAVEN_OPTS: -Dmaven.repo.local=.m2/repository
+
+image: registry.forgemia.inra.fr/agroclim/common/docker-projets-java:latest
+
+stages:
+    - build
+    - test
+    - code-check
+
+cache:
+  paths:
+    - .m2/repository
+
+build_job:
+  stage: build
+  script:
+    - echo "Maven compile started"
+    - mvn clean compile test-compile
+    - ls -lha /usr/bin/tokei
+    - /usr/bin/tokei --version
+  artifacts:
+    paths:
+      - target
+
+test_job:
+  stage: test
+  needs: ["build_job"]
+  script:
+    - echo "Maven test started"
+    - mvn test org.jacoco:jacoco-maven-plugin:report-aggregate
+  artifacts:
+    when: always
+    paths:
+      - target
+    reports:
+      junit:
+        - target/surefire-reports/TEST-*.xml
+        - target/failsafe-reports/TEST-*.xml
+
+checkstyle_job:
+  stage: code-check
+  needs: ["build_job"]
+  script:
+    - mvn checkstyle:checkstyle
+  artifacts:
+    paths:
+      - target
+
+pmd_job:
+  stage: code-check
+  needs: ["build_job"]
+  script:
+    - mvn pmd:pmd
+  artifacts:
+    paths:
+      - target
+
+cpd_job:
+  stage: code-check
+  needs: ["build_job"]
+  script:
+    - mvn pmd:cpd
+  artifacts:
+    paths:
+      - target
+
+cobertura_job:
+  stage: deploy
+  needs: ["test_job"]
+  script:
+    # convert report from jacoco to cobertura, using relative project path
+    - python /opt/cover2cover.py
+      target/site/jacoco-aggregate/jacoco.xml
+      www-client/target/site/jacoco-aggregate/jacoco.xml
+      www-server/target/site/jacoco-aggregate/jacoco.xml
+      www-shared/target/site/jacoco-aggregate/jacoco.xml
+      $CI_PROJECT_DIR/src/main/java/
+      $CI_PROJECT_DIR/www-client/src/main/java/
+      $CI_PROJECT_DIR/www-server/src/main/java/
+      $CI_PROJECT_DIR/www-shared/src/main/java/
+      > target/cobertura.xml
+  artifacts:
+    paths:
+      - target
+
-- 
GitLab


From 8a41fd362aa6bbe17eb0f83aad1fd1b8ab8d979e Mon Sep 17 00:00:00 2001
From: Olivier Maury <olivier.maury@inrae.fr>
Date: Wed, 10 Jan 2024 10:57:41 +0100
Subject: [PATCH 2/8] =?UTF-8?q?Mettre=20=C3=A0=20jour=20le=20fichier=20.gi?=
 =?UTF-8?q?tlab-ci.yml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .gitlab-ci.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e677ee3..27c4960 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -7,6 +7,7 @@ stages:
     - build
     - test
     - code-check
+    - deploy
 
 cache:
   paths:
-- 
GitLab


From 362714d00ea81ab9417b65b5d2e18e3587a43a30 Mon Sep 17 00:00:00 2001
From: Olivier Maury <Olivier.Maury@inrae.fr>
Date: Fri, 12 Jan 2024 09:32:44 +0100
Subject: [PATCH 3/8] Configurer CI/CD. refs #15

---
 .gitlab-ci.yml     | 52 +++++++++++++++++++++++++++++++---------------
 www-client/pom.xml |  2 ++
 www-server/pom.xml | 19 +++++++++++++++++
 3 files changed, 56 insertions(+), 17 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 27c4960..eff8fb1 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,17 +1,22 @@
 variables:
-  MAVEN_OPTS: -Dmaven.repo.local=.m2/repository
+  MAVEN_OPTS: "-Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository"
 
 image: registry.forgemia.inra.fr/agroclim/common/docker-projets-java:latest
 
 stages:
     - build
     - test
+    - install
     - code-check
     - deploy
 
 cache:
   paths:
     - .m2/repository
+    - target
+    - www-client/target
+    - www-server/target
+    - www-shared/target
 
 build_job:
   stage: build
@@ -21,8 +26,12 @@ build_job:
     - ls -lha /usr/bin/tokei
     - /usr/bin/tokei --version
   artifacts:
+    when: always
     paths:
       - target
+      - www-client/target
+      - www-server/target
+      - www-shared/target
 
 test_job:
   stage: test
@@ -34,37 +43,38 @@ test_job:
     when: always
     paths:
       - target
+      - www-client/target
+      - www-server/target
+      - www-shared/target
     reports:
       junit:
         - target/surefire-reports/TEST-*.xml
         - target/failsafe-reports/TEST-*.xml
 
+install_job:
+  stage: install
+  needs: ["test_job"]
+  script:
+    - echo "Maven packaging started"
+    - mvn install -DskipTests
+
 checkstyle_job:
   stage: code-check
-  needs: ["build_job"]
+  needs: ["install_job"]
   script:
     - mvn checkstyle:checkstyle
-  artifacts:
-    paths:
-      - target
 
 pmd_job:
   stage: code-check
-  needs: ["build_job"]
+  needs: ["install_job"]
   script:
     - mvn pmd:pmd
-  artifacts:
-    paths:
-      - target
 
 cpd_job:
   stage: code-check
-  needs: ["build_job"]
+  needs: ["install_job"]
   script:
     - mvn pmd:cpd
-  artifacts:
-    paths:
-      - target
 
 cobertura_job:
   stage: deploy
@@ -72,16 +82,24 @@ cobertura_job:
   script:
     # convert report from jacoco to cobertura, using relative project path
     - python /opt/cover2cover.py
-      target/site/jacoco-aggregate/jacoco.xml
       www-client/target/site/jacoco-aggregate/jacoco.xml
       www-server/target/site/jacoco-aggregate/jacoco.xml
       www-shared/target/site/jacoco-aggregate/jacoco.xml
-      $CI_PROJECT_DIR/src/main/java/
       $CI_PROJECT_DIR/www-client/src/main/java/
       $CI_PROJECT_DIR/www-server/src/main/java/
       $CI_PROJECT_DIR/www-shared/src/main/java/
       > target/cobertura.xml
+
+# https://agroclim.pages.mia.inra.fr/agrometinfo/www/
+pages:
+  stage: deploy
+  needs: ["install_job"]
+  script:
+    - mvn site -DskipTests
+    - mv www-client/target/site/ target/site/www-client
+    - mv www-server/target/site/ target/site/www-server
+    - mv www-shared/target/site/ target/site/www-shared
   artifacts:
     paths:
-      - target
-
+      - target/site
+  publish: target/site
diff --git a/www-client/pom.xml b/www-client/pom.xml
index 37cf75a..353709b 100644
--- a/www-client/pom.xml
+++ b/www-client/pom.xml
@@ -25,6 +25,7 @@
     </properties>
 
     <dependencies>
+        <!-- AgroMetInfo -->
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>www-shared</artifactId>
@@ -37,6 +38,7 @@
             <version>${project.version}</version>
             <classifier>sources</classifier>
         </dependency>
+        <!-- GWT -->
         <dependency>
             <groupId>org.gwtproject</groupId>
             <artifactId>gwt-user</artifactId>
diff --git a/www-server/pom.xml b/www-server/pom.xml
index 182a39f..e2d5bb8 100644
--- a/www-server/pom.xml
+++ b/www-server/pom.xml
@@ -187,6 +187,25 @@
     </dependency>
   </dependencies>
 
+  <repositories>
+    <repository>
+      <id>sava-gitlab-maven</id>
+      <url>https://forgemia.inra.fr/api/v4/projects/5817/packages/maven</url>
+    </repository>
+  </repositories>
+
+  <distributionManagement>
+    <repository>
+      <id>sava-gitlab-maven</id>
+      <url>https://forgemia.inra.fr/api/v4/projects/5817/packages/maven</url>
+    </repository>
+
+    <snapshotRepository>
+      <id>sava-gitlab-maven</id>
+      <url>https://forgemia.inra.fr/api/v4/projects/5817/packages/maven</url>
+    </snapshotRepository>
+  </distributionManagement>
+
   <build>
     <resources>
       <resource>
-- 
GitLab


From edf19b92f3109094865a57d241789f057d78c758 Mon Sep 17 00:00:00 2001
From: Olivier Maury <Olivier.Maury@inrae.fr>
Date: Fri, 12 Jan 2024 09:39:01 +0100
Subject: [PATCH 4/8] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20tokei.=20refs?=
 =?UTF-8?q?=20#15?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 bin/sloccount.sh  | 40 ++++++++++++++++++----------------------
 bin/tokei2cloc.py | 43 ++++++++++++++-----------------------------
 2 files changed, 32 insertions(+), 51 deletions(-)

diff --git a/bin/sloccount.sh b/bin/sloccount.sh
index 2ad6993..e35660c 100755
--- a/bin/sloccount.sh
+++ b/bin/sloccount.sh
@@ -1,28 +1,24 @@
 #!/bin/bash
-
+ROOT_DIR=$(dirname $(dirname $0))
 TOKEI2CLOC=$(dirname $0)/tokei2cloc.py
-TOKEITGZ=tokei-v7.0.3-x86_64-unknown-linux-gnu.tar.gz
-if [ ! -f bin/tokei ]; then
-	mkdir -p ~/tmp bin
-	if [ ! -f ~/tmp/$TOKEITGZ ]; then
-		wget "https://github.com/Aaronepower/tokei/releases/download/v7.0.3/$TOKEITGZ" -O ~/tmp/$TOKEITGZ
+TOKEI=$(command -v tokei)
+if [ ! -x "$TOKEI" ]; then
+	TOKEITGZ=tokei-x86_64-unknown-linux-gnu.tar.gz
+	if [ ! -f bin/tokei ]; then
+		mkdir -p ~/tmp
+		if [ ! -f ~/tmp/$TOKEITGZ ]; then
+			wget "https://github.com/Aaronepower/tokei/releases/download/v12.1.2/$TOKEITGZ" -O ~/tmp/$TOKEITGZ
+		fi
+		tar zxf ~/tmp/$TOKEITGZ -C bin
 	fi
-	tar zxf ~/tmp/$TOKEITGZ -C bin
+	TOKEI=bin/tokei
 fi
-if [ -f bin/tokei ]; then
-	mkdir -p target
-	bin/tokei -f -o json src | $TOKEI2CLOC > target/cloc.xml
-	exit
+if [ ! -f $TOKEI ]; then
+	echo "Strange, $TOKEI does not exist!"
+	exit 1
 fi
 
-SLOCCOUNT=$(which sloccount);
-if [ "$SLOCCOUNT" != "" ]; then
-	DATADIR=$(dirname $0)/.slocdata;
-	if [ ! -f $DATADIR ]; then
-		mkdir -p $DATADIR;
-	fi
-	mkdir -p target ;
-	/usr/bin/sloccount --datadir $DATADIR --duplicates --wide --details src > target/sloccount.sc;
-else 
-	echo "sloccount not found!";
-fi
+echo "tokei is installed at $TOKEI"
+$TOKEI --version
+mkdir -p $ROOT_DIR/target
+$TOKEI -f -o json $ROOT_DIR/sava-core/src $ROOT_DIR/sava-core-jakarta/src $ROOT_DIR/sava-example/src | $TOKEI2CLOC > $ROOT_DIR/target/cloc.xml
diff --git a/bin/tokei2cloc.py b/bin/tokei2cloc.py
index f554a07..bc41a97 100755
--- a/bin/tokei2cloc.py
+++ b/bin/tokei2cloc.py
@@ -1,29 +1,12 @@
 #!/usr/bin/env python3
 # -*- coding: UTF-8 -*-
-#
-# data.pheno.fr - Phenological data portal of TEMPO
-# Copyright © 2019 TEMPO (contact-tempo@inrae.fr)
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
 
-# $Id: tokei2cloc.py 77 2019-01-11 17:24:18Z omaury $
+# $Id$
 #
 # Author : Olivier Maury
 # Creation Date : 2019-01-15 10:30:29 +0200
-# Last Revision : $Date: 2019-01-11 18:24:18 +0100 (ven., 11 janv. 2019) $
-# Revision : $Rev: 77 $
+# Last Revision : $Date$
+# Revision : $Rev$
 u"""
 NOM
         %prog - Tokei2Cloc
@@ -38,10 +21,10 @@ u"""
         Olivier Maury
 
 VERSION
-        $Date: 2019-01-11 18:24:18 +0100 (ven., 11 janv. 2019) $
+        $Date$
 """
 
-__revision__ = "$Rev: 77 $"
+__revision__ = "$Rev$"
 __author__ = "Olivier Maury"
 import json
 import sys
@@ -52,8 +35,10 @@ results = json.loads(sys.stdin.read())
 nb_files = 0
 nb_lines = 0
 for lang in results:
-    nb_files += len(results[lang]['stats'])
-    nb_lines += int(results[lang]['lines'])
+    nb_files += len(results[lang]['reports'])
+    nb_lines += int(results[lang]['blanks'])
+    nb_lines += int(results[lang]['code'])
+    nb_lines += int(results[lang]['comments'])
 
 print("""<?xml version="1.0"?><results>
 <header>
@@ -73,11 +58,11 @@ total_blank = 0
 total_comment = 0
 total_code = 0
 for lang in results:
-    for result in results[lang]['stats']:
-        blank = int(result['blanks'])
-        comment = int(result['comments'])
-        code = int(result['code'])
-        print("""  <file name="%s" blank="%d" comment="%d" code="%d" language="%s" />""" % 
+    for result in results[lang]['reports']:
+        blank = int(result['stats']['blanks'])
+        comment = int(result['stats']['comments'])
+        code = int(result['stats']['code'])
+        print("""  <file name="%s" blank="%d" comment="%d" code="%d"  language="%s" />""" % 
             (result['name'], blank, comment, code, lang))
         total_blank += blank
         total_comment += comment
-- 
GitLab


From 23e7557bd1c6e43c091990361dcff343ae1f8a83 Mon Sep 17 00:00:00 2001
From: Olivier Maury <Olivier.Maury@inrae.fr>
Date: Fri, 12 Jan 2024 09:44:52 +0100
Subject: [PATCH 5/8] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20tokei.=20refs?=
 =?UTF-8?q?=20#15?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 bin/sloccount.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/bin/sloccount.sh b/bin/sloccount.sh
index e35660c..5b15d00 100755
--- a/bin/sloccount.sh
+++ b/bin/sloccount.sh
@@ -21,4 +21,4 @@ fi
 echo "tokei is installed at $TOKEI"
 $TOKEI --version
 mkdir -p $ROOT_DIR/target
-$TOKEI -f -o json $ROOT_DIR/sava-core/src $ROOT_DIR/sava-core-jakarta/src $ROOT_DIR/sava-example/src | $TOKEI2CLOC > $ROOT_DIR/target/cloc.xml
+$TOKEI -f -o json $ROOT_DIR/www-client/src $ROOT_DIR/www-server/src $ROOT_DIR/www-shared/src | $TOKEI2CLOC > $ROOT_DIR/target/cloc.xml
-- 
GitLab


From e64f9d870be3a0625c90090b707fb62fffd9fbd1 Mon Sep 17 00:00:00 2001
From: Olivier Maury <Olivier.Maury@inrae.fr>
Date: Fri, 12 Jan 2024 09:57:45 +0100
Subject: [PATCH 6/8] Corriger .gitlab-ci.yml. refs #15

---
 .gitlab-ci.yml | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index eff8fb1..e4e5b27 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -57,6 +57,10 @@ install_job:
   script:
     - echo "Maven packaging started"
     - mvn install -DskipTests
+  artifacts:
+    when: always
+    paths:
+      - .m2/repository
 
 checkstyle_job:
   stage: code-check
-- 
GitLab


From 8405ce6a041b709ef263ebd8611bcfa5e5439139 Mon Sep 17 00:00:00 2001
From: Olivier Maury <Olivier.Maury@inrae.fr>
Date: Fri, 12 Jan 2024 10:22:48 +0100
Subject: [PATCH 7/8] Corriger checkstyle-suppressions.xml. refs #15

---
 .gitlab-ci.yml                     | 5 +++++
 config/checkstyle-suppressions.xml | 4 ++++
 2 files changed, 9 insertions(+)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e4e5b27..00886f3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -18,6 +18,11 @@ cache:
     - www-server/target
     - www-shared/target
 
+dependencies_job:
+  stage: build
+  script:
+    - mvn -B dependency:resolve dependency:resolve-plugins
+
 build_job:
   stage: build
   script:
diff --git a/config/checkstyle-suppressions.xml b/config/checkstyle-suppressions.xml
index 7f911a7..0e5d10b 100644
--- a/config/checkstyle-suppressions.xml
+++ b/config/checkstyle-suppressions.xml
@@ -5,4 +5,8 @@
 <suppressions>
     <suppress checks=".*" files="[/\\]generated-sources[/\\]" />
     <suppress checks="JavadocPackage|MagicNumber" files="[/\\]src[/\\]test[/\\]" />
+    <!-- www-client/config/checkstyle-suppressions.xml -->
+    <suppress checks="MagicNumber" files="ColorSequences.java" />
+    <!-- www-server/config/checkstyle-suppressions.xml -->
+    <suppress checks="DesignForExtension" files=".*Resource.java" />
 </suppressions>
-- 
GitLab


From 6a132f19f0be8fde6791515ffe2b0b5973ca67e5 Mon Sep 17 00:00:00 2001
From: Olivier Maury <Olivier.Maury@inrae.fr>
Date: Fri, 12 Jan 2024 10:39:16 +0100
Subject: [PATCH 8/8] Corriger .gitlab-ci.yml. refs #15

---
 .gitlab-ci.yml | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 00886f3..e4e5b27 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -18,11 +18,6 @@ cache:
     - www-server/target
     - www-shared/target
 
-dependencies_job:
-  stage: build
-  script:
-    - mvn -B dependency:resolve dependency:resolve-plugins
-
 build_job:
   stage: build
   script:
-- 
GitLab