content
"}},Qt={element:"span",mutate:function(e){e.setAttribute("style","display: -webkit-flex; display: -ms-flexbox; display: flex;"),e.innerHTML='hello'}},Yt={element:"form",mutate:function(e){e.setAttribute("tabindex",0),e.setAttribute("disabled","disabled")}},en={element:"a",mutate:function(e){return e.href="#void",e.innerHTML='content
",e.firstElementChild}},xn=function(e){if(!e.ownerSVGElement&&"svg"!==e.nodeName.toLowerCase())return!1;var t=s();e.appendChild(t);var n=t.querySelector("input");return n.focus(),n.disabled=!0,e.removeChild(t),!0},yn={element:"div",mutate:function(e){return e.innerHTML=c('Date de la publication : 30 juillet 2025
Lecture : 7 min
Optimisez votre workflow DevSecOps en adoptant des bonnes pratiques, en maîtrisant des techniques avancées et en découvrant nos prochaines fonctionnalités.
En tant que Product Manager chez GitLab, j'ai le plaisir de vous présenter nos solutions pour sécuriser et optimiser votre dépôt Maven. GitLab s'engage à offrir une plateforme DevSecOps complète, où la gestion des packages et la sécurisation des dépôts Maven jouent un rôle clé. Découvrez dans ce tutoriel les bonnes pratiques, les techniques avancées et les fonctionnalités à venir qui vont transformer votre workflow Maven.
La sécurisation de votre chaîne d'approvisionnement logicielle est une priorité absolue. Voici les stratégies essentielles pour renforcer la sécurité de vos paquets Maven dans GitLab.
Jetons d'accès personnels (PAT) : privilégiez les PAT pour un contrôle d'accès affiné.
Par exemple :
mvn deploy -s settings.xml
Avec la configuration suivante dans settings.xml
:
<settings>
<servers>
<server>
<id>gitlab-maven</id>
<configuration>
<httpHeaders>
<property>
<name>Private-Token</name>
<value>${env.GITLAB_PERSONAL_TOKEN}</value>
</property>
</httpHeaders>
</configuration>
</server>
</servers>
</settings>
Tokens de déploiement : adaptés pour les pipelines CI/CD. Générez-les dans les paramètres de votre projet GitLab et intégrez-les dans votre fichier .gitlab-ci.yml
.
deploy:
script:
- 'mvn deploy -s ci_settings.xml'
variables:
MAVEN_CLI_OPTS: "-s ci_settings.xml --batch-mode"
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
only:
- main
Voici le fichier ci_settings.xml
correspondant :
<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>Deploy-Token</name>
<value>${env.CI_DEPLOY_PASSWORD}</value>
</property>
</httpHeaders>
</configuration>
</server>
</servers>
</settings>
Remarques :
CI_DEPLOY_PASSWORD
doit être configurée comme une variable CI/CD dans les paramètres de votre projet GitLab et contenir le token de déploiement.<id>
doit correspondre à l'ID du dépôt tel qu'il est défini dans le fichier pom.xml
de votre projet.Rotation des tokens : automatisez la stratégie de rotation des tokens à l'aide de l'API GitLab. Par exemple, vous pouvez planifier un pipeline mensuel qui regénère et met à jour vos tokens :
rotate_tokens:
script:
- curl --request POST "https://gitlab.example.com/api/v4/projects/${CI_PROJECT_ID}/deploy_tokens" --header "PRIVATE-TOKEN: ${ADMIN_TOKEN}" --form "name=maven-deploy-${CI_PIPELINE_ID}" --form "scopes[]=read_registry" --form "scopes[]=write_registry"
only:
- schedules
Analyse des dépendances : activez-la dans votre fichier .gitlab-ci.yml
.
include:
- template: Security/Dependency-Scanning.gitlab-ci.yml
variables:
DS_JAVA_VERSION: 11
Analyse des conteneurs : si vous conteneurisez vos applications Maven.
include:
- template: Security/Container-Scanning.gitlab-ci.yml
variables:
CS_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
Conformité des licences : assurez-vous que toutes les dépendances respectent les licences autorisées dans votre projet.
include:
- template: Security/License-Scanning.gitlab-ci.yml
Variables CI/CD : stockez toutes les informations contenant des données sensibles en toute sécurité.
variables:
MAVEN_REPO_USER: ${CI_DEPLOY_USER}
MAVEN_REPO_PASS: ${CI_DEPLOY_PASSWORD}
Variables masquées : empêchez leur affichage dans les job logs et définissez-les dans vos paramètres GitLab CI/CD.
Branches et tags protégés : configurez-les dans les paramètres de votre projet GitLab pour restreindre les droits de publication des packages Maven aux utilisateurs autorisés.
Utilisez le plug-in Maven GPG pour signer vos artefacts.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
Stockez votre clé GPG dans des variables GitLab CI/CD sécurisées.
La gestion de projets complexes ou de nombreuses dépendances exige une productivité maximale. Découvrez ci-dessous des techniques avancées pour tirer le meilleur parti de vos paquets Maven dans GitLab et accélérer vos compilations.
Centralisez vos versions dans la section <dependencyManagement>
de votre fichier POM parent.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Structurez votre projet avec un POM parent et plusieurs modules enfants :
my-project/
├── pom.xml
├── module1/
│ └── pom.xml
├── module2/
│ └── pom.xml
└── module3/
└── pom.xml
Utilisez le réacteur Maven pour compiler les modules dans un ordre optimal :
mvn clean install
Utilisez la fonctionnalité de compilation parallèle de Maven :
mvn -T 4C clean install
Configurez la mise en cache dans .gitlab-ci.yml
pour accélérer les compilations :
cache:
paths:
- .m2/repository
build:
script:
- mvn clean package -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository
Implémentez des compilations incrémentielles :
build:
script:
- mvn clean install -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -am -amd -fae
Intégrez l'extension Gradle Enterprise de Maven pour une gestion avancée de la mise en cache des compilations :
<build>
<plugins>
<plugin>
<groupId>com.gradle</groupId>
<artifactId>gradle-enterprise-maven-plugin</artifactId>
<version>1.9</version>
<configuration>
<gradleEnterprise>
<server>https://ge.example.com</server>
<allowUntrusted>false</allowUntrusted>
</gradleEnterprise>
</configuration>
</plugin>
</plugins>
</build>
Nous avons le plaisir d'annoncer le lancement du programme bêta de notre nouvelle fonctionnalité : le registre virtuel Maven. Cet ajout à l'écosystème GitLab transformera la gestion des dépôts Maven au sein de vos projets.
settings.xml
:<settings>
<servers>
<server>
<id>gitlab-maven</id>
<configuration>
<httpHeaders>
<property>
<name>Private-Token</name>
<value>${env.GITLAB_TOKEN}</value>
</property>
</httpHeaders>
</configuration>
</server>
</servers>
</settings>
Options d'authentification :
Jeton d'accès personnel : utilisez Private-Token
comme nom et ${env.GITLAB_TOKEN}
comme valeur.
Token de déploiement de groupe : utilisez Deploy-Token
comme nom et ${env.GITLAB_DEPLOY_TOKEN}
comme valeur.
Token d'accès de groupe : utilisez Private-Token
comme nom et ${env.GITLAB_ACCESS_TOKEN}
comme valeur.
Token de job CI : utilisez Job-Token
comme nom et ${CI_JOB_TOKEN}
comme valeur.
Configurez le registre virtuel dans votre fichier pom.xml
.
Option 1 : en tant que registre supplémentaire :
<repositories>
<repository>
<id>gitlab-maven</id>
<url>https://gitlab.example.com/api/v4/virtual_registries/packages/maven/<virtual registry id></url>
</repository>
</repositories>
Option 2 : en remplacement de Maven Central (dans votre fichier settings.xml
) :
<mirrors>
<mirror>
<id>gitlab-maven</id>
<name>GitLab virtual registry for Maven Central</name>
<url>https://gitlab.example.com/api/v4/virtual_registries/packages/maven/<virtual registry id></url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
# For personal access tokens
export GITLAB_TOKEN=your_personal_access_token
# For group deploy tokens
export GITLAB_DEPLOY_TOKEN=your_deploy_token
# For group access tokens
export GITLAB_ACCESS_TOKEN=your_access_token
# Then run Maven commands normally
mvn package
Nous recherchons activement des participants souhaitant tester notre version bêta :
Pour rejoindre le programme bêta ou en savoir plus sur le registre virtuel Maven, consultez notre page dédiée au programme bêta du registre virtuel Maven de GitLab (Remarque : lien provisoire).
Chez GitLab, nous avons à cœur de proposer des outils à la fois sécurisés, performants et évolutifs pour accompagner votre développement logiciel. Le registre virtuel Maven illustre notre volonté constante d'innover pour répondre aux besoins croissants des développeurs et ingénieurs de plateforme.
En appliquant les mesures de sécurité et les techniques d'optimisation abordées dans cet article, et en tirant parti des futures fonctionnalités telles que le registre virtuel Maven, vous renforcerez l'efficacité de votre workflow Maven dans GitLab.
Nous sommes impatients de voir comment ces nouvelles fonctionnalités de gestion des paquets dans GitLab contribueront à perfectionner vos processus de développement. Restez à l'écoute et bon codage !