-
semantic-release-bot authored
# [3.7.0](https://gitlab.com/to-be-continuous/maven/compare/3.6.2...3.7.0) (2023-10-24) ### Features * inject branch slug into SNAPSHOT version ([6fc68178](https://gitlab.com/to-be-continuous/maven/commit/6fc68178b57c53b77a212901a2735bb0ba04cf54))
semantic-release-bot authored# [3.7.0](https://gitlab.com/to-be-continuous/maven/compare/3.6.2...3.7.0) (2023-10-24) ### Features * inject branch slug into SNAPSHOT version ([6fc68178](https://gitlab.com/to-be-continuous/maven/commit/6fc68178b57c53b77a212901a2735bb0ba04cf54))
GitLab CI template for Maven
This project implements a GitLab CI/CD template to build, test and analyse your Maven-based projects.
Usage
In order to include this template in your project, add the following to your gitlab-ci.yml
:
include:
- project: 'to-be-continuous/maven'
ref: '3.7.0'
file: '/templates/gitlab-ci-maven.yml'
Global configuration
The Maven template uses some global configuration throughout all jobs.
Name | description | default value |
---|---|---|
MAVEN_IMAGE |
The Docker image used to run Maven |
registry.hub.docker.com/library/maven:latest |
MAVEN_PROJECT_DIR |
Maven projet root directory | . |
MAVEN_CFG_DIR |
The Maven configuration directory | .m2 |
MAVEN_SETTINGS_FILE |
The Maven settings.xml file path |
${MAVEN_CFG_DIR}/settings.xml |
MAVEN_OPTS |
Global Maven options | -Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=${MAVEN_CFG_DIR}/repository -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true |
MAVEN_CLI_OPTS |
Additional Maven options used on the command line | --no-transfer-progress --batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true |
$MAVEN_CFG_DIR
About This variable is used to define the Maven configuration directory. It is used to declare the cache policy and marked the ${MAVEN_CFG_DIR}/repository
directory as cached (not to download Maven dependencies over and over again).
If you have a good reason to do differently, you'll have to override the MAVEN_CLI_OPTS
variable as well as the cache
policy.
$MAVEN_SETTINGS_FILE
About If a file is found at the $MAVEN_SETTINGS_FILE
location, the template automatically uses it as a settings.xml
(using the --settings
option on command line).
Note that with this design you are free to either:
- inline the
settings.xml
file into your repository source (⚠️ make sure not to inline secrets but use the${env.MY_PASSWORD}
replacement pattern instead and define theMY_PASSWORD
variable as secret project variable), - or define the
settings.xml
content as a file type project variable.
Jobs
mvn-build
job
The Maven template features a job mvn-build
that performs build and tests at once.
This stage is performed in a single job for optimization purpose (it saves time) and also
for test jobs dependency reasons (some test jobs such as SONAR analysis have a dependency on test results).
It uses the following variable:
Name | description | default value |
---|---|---|
MAVEN_BUILD_ARGS |
Maven arguments for the build & test job | org.jacoco:jacoco-maven-plugin:prepare-agent verify org.jacoco:jacoco-maven-plugin:report |
About Code Coverage
With its default arguments, the GitLab CI template for Maven forces the use of JaCoCo Maven Plugin to compute code coverage during unit tests execution.
In addition it makes the necessary to integrate code coverage stats into your GitLab project (report badge and viewable coverage in merge requests).
If yo want to fix the JaCoCo plugin version or tweak the default configuration, you may have to configure the
JaCoCo Maven Plugin in your pom.xml
, but be aware of the
following:
- do not declare JaCoCo executions for
prepare-agent
andreport
goals as each would run twice during unit tests (not necessarily with the expected configuration). If you really need to do so anyway, you'll have to override the$MAVEN_BUILD_ARGS
variable to remove the explicit invocation to JaCoCo goals. - make sure the
report
goal computes a CSV report, that is used by the Maven template to compute the global coverage stat.
More info:
mvn-sonar
job — SonarQube analysis
This job, disabled by default, is bound to the test
stage and performs a SonarQube analysis of your code.
This job uses the following variables:
Name | description | default value |
---|---|---|
SONAR_HOST_URL |
SonarQube server url | none (disabled) |
SONAR_TOKEN
|
SonarQube authentication token (depends on your authentication method) | none |
SONAR_LOGIN
|
SonarQube login (depends on your authentication method) | none |
SONAR_PASSWORD
|
SonarQube password (depends on your authentication method) | none |
SONAR_BASE_ARGS |
SonarQube analysis arguments | sonar:sonar -Dsonar.links.homepage=${CI_PROJECT_URL} -Dsonar.links.ci=${CI_PROJECT_URL}/-/pipelines -Dsonar.links.issue=${CI_PROJECT_URL}/-/issues |
SONAR_QUALITY_GATE_ENABLED |
Set to true to enable SonarQube Quality Gate verification.Uses sonar.qualitygate.wait parameter (see doc).
|
none (disabled) |