diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..07f85baff3a5343a5f2fedf0e9809c8dcbe8a1be --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,123 @@ +variables: + 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 + +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 + - sava-core/target + - sava-core-jarkarta/target + - sava-example/jarkarta/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 + - sava-core/target + - sava-core-jarkarta/target + - sava-example/jarkarta/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 + artifacts: + paths: + - target + - sava-core/target + - sava-core-jarkarta/target + - sava-example/jarkarta/target + +pmd_job: + stage: code-check + needs: ["install_job"] + script: + - mvn pmd:pmd + artifacts: + paths: + - target + - sava-core/target + - sava-core-jarkarta/target + - sava-example/jarkarta/target + +cpd_job: + stage: code-check + needs: ["install_job"] + script: + - mvn pmd:cpd + artifacts: + paths: + - target + - sava-core/target + - sava-core-jarkarta/target + - sava-example/jarkarta/target + +cobertura_job: + stage: deploy + needs: ["test_job"] + script: + # convert report from jacoco to cobertura, using relative project path + - python /opt/cover2cover.py + sava-core/target/site/jacoco-aggregate/jacoco.xml + sava-core-jakarta/target/site/jacoco-aggregate/jacoco.xml + sava-example/target/site/jacoco-aggregate/jacoco.xml + $CI_PROJECT_DIR/sava-core/src/main/java/ + $CI_PROJECT_DIR/sava-core-jakarta/src/main/java/ + $CI_PROJECT_DIR/sava-example/src/main/java/ + > target/cobertura.xml + artifacts: + paths: + - target + +deploy_job: + stage: deploy + only: + - main + script: + - echo "Maven deploy started" + - mvn -s .gitlab/settings.xml deploy --projects sava-core sava-core-jakarta + +# https://agroclim.pages.mia.inra.fr/sava/ +pages: + stage: deploy + needs: ["install_job"] + script: + - mvn site -DskipTests + - mv sava-core/target/site/ target/site/sava-core + - mv sava-core-jakarta/target/site/ target/site/sava-core-jakarta + - mv sava-example/target/site/ target/site/sava-example + artifacts: + paths: + - target/site + publish: target/site diff --git a/.gitlab/settings.xml b/.gitlab/settings.xml new file mode 100644 index 0000000000000000000000000000000000000000..69ad06ed6c63795d191555afde6ea2d1da4e133d --- /dev/null +++ b/.gitlab/settings.xml @@ -0,0 +1,16 @@ +<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd"> + <servers> + <server> + <id>gitlab-maven</id> + <configuration> + <httpHeaders> + <property> + <name>Job-Token</name> + <value>${CI_JOB_TOKEN}</value> + </property> + </httpHeaders> + </configuration> + </server> + </servers> +</settings> diff --git a/bin/sloccount.sh b/bin/sloccount.sh index b15e5804f88ded23261ec0eee3f06905db376c32..e35660c6a8420ee78f39d2992f7df6cd9a11835c 100755 --- a/bin/sloccount.sh +++ b/bin/sloccount.sh @@ -1,30 +1,24 @@ #!/bin/bash - -TOKEI2SLOCCOUNT=$(dirname $0)/tokei2sloccount.py +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 | $TOKEI2SLOCCOUNT > target/sloccount.sc - 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 \ No newline at end of file +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 5bd0146007a58a9e821f9738b67f02377327e532..bc41a97876ca9d42b55f6a2aaa1e2590312f3d01 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""" [1mNOM[m %prog - Tokei2Cloc @@ -38,10 +21,10 @@ u""" Olivier Maury [1mVERSION[m - $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,10 +58,10 @@ 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']) + 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 diff --git a/pom.xml b/pom.xml index 05d5f058184d5fa6fa6480f10ea57dd48c805f8b..0c07461642edd4b774457a802c07919232d935e1 100644 --- a/pom.xml +++ b/pom.xml @@ -92,6 +92,23 @@ <metadata.long-description xml:lang="fr"><![CDATA[SAVA est une bibliothèque Java développée dans l'unité INRAE AgroClim pour le suivi de ses applications en utilisant le format Prometheus.]]></metadata.long-description> </properties> + <repositories> + <repository> + <id>gitlab-maven</id> + <url>${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/maven</url> + </repository> + </repositories> + <distributionManagement> + <repository> + <id>gitlab-maven</id> + <url>${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/maven</url> + </repository> + <snapshotRepository> + <id>gitlab-maven</id> + <url>${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/maven</url> + </snapshotRepository> + </distributionManagement> + <dependencyManagement> <dependencies>