From 9bd7a3e2f73b38cd14db06fb0c78e0bd690ea971 Mon Sep 17 00:00:00 2001 From: Maxime Besson Date: Sat, 16 Jan 2021 14:30:55 +0100 Subject: [PATCH] Add sonar CI job (#2437) --- .gitlab-ci.yml | 25 +++++++++++++++++++++++++ scripts/sonar | 18 ++++++++++++++++++ sonar-project.properties | 19 +++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100755 scripts/sonar create mode 100644 sonar-project.properties diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 493838272..894f6158a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,6 +4,9 @@ expire_in: 1 hour paths: - result/* + except: + variables: + - $SONARJOB == "1" .debian_build_job: extends: .build_job @@ -109,3 +112,25 @@ pages: only: - master +sonar-inspect: + image: buildpkg/debian:buster + stage: build + script: + - scripts/sonar + artifacts: + expire_in: 1 hour + paths: + - lemonldap-ng-*/cover_db/sonar_generic.xml + - lemonldap-ng-*/perlcritic_report.txt + only: + variables: + - $SONARJOB == "1" + +sonar-upload: + stage: deploy + image: sonarsource/sonar-scanner-cli + script: + - sonar-scanner + only: + variables: + - $SONARJOB == "1" diff --git a/scripts/sonar b/scripts/sonar new file mode 100755 index 000000000..fdc87edac --- /dev/null +++ b/scripts/sonar @@ -0,0 +1,18 @@ +#!/bin/sh + +mk-build-deps --install --remove \ + --tool "apt-get -o Debug::pkgProblemResolver=yes -q -y" \ + debian/control +apt -y install libperl-critic-perl libdevel-cover-perl cpanminus +cpanm install Devel::Cover::Report::SonarGeneric +make SKIP_DOCUMENTATION=1 + +for module in common handler portal manager; do + cd lemonldap-ng-$module + perlcritic --cruel --quiet --verbose "%f~|~%s~|~%l~|~%c~|~%m~|~%e~|~%p~||~%n" lib t > perlcritic_report.txt + cover -delete + HARNESS_PERL_SWITCHES=-MDevel::Cover prove + cover -report SonarGeneric + sed -i "s,path=\"blib,path=\"lemonldap-ng-$module,g" cover_db/sonar_generic.xml + cd .. +done diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 000000000..6578692e6 --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,19 @@ +# must be unique in a given SonarQube instance +# this is the name displayed in the SonarQube UI +sonar.projectName=LemonLDAP::NG +sonar.projectKey=lemonldap-ng + +# Encoding of the source code. Default is default system encoding +sonar.sourceEncoding=UTF-8 +sonar.sources=lib +sonar.tests=t + +sonar.modules=lemonldap-ng-common,lemonldap-ng-handler,lemonldap-ng-portal,lemonldap-ng-manager + +lemonldap-ng-common.sonar.perlcritic.reportPath=lemonldap-ng-common/perlcritic_report.txt +lemonldap-ng-handler.sonar.perlcritic.reportPath=lemonldap-ng-handler/perlcritic_report.txt +lemonldap-ng-portal.sonar.perlcritic.reportPath=lemonldap-ng-portal/perlcritic_report.txt +lemonldap-ng-manager.sonar.perlcritic.reportPath=lemonldap-ng-manager/perlcritic_report.txt + +# requires manually fixing file paths in each coverage file +sonar.coverageReportPaths=lemonldap-ng-common/cover_db/sonar_generic.xml,lemonldap-ng-handler/cover_db/sonar_generic.xml,lemonldap-ng-portal/cover_db/sonar_generic.xml,lemonldap-ng-manager/cover_db/sonar_generic.xml