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:
MAVEN_REPO_USER: ${CI_DEPLOY_USER}
MAVEN_REPO_PASS: ${CI_DEPLOY_PASSWORD}
<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>
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.
<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>
my-project/
├── pom.xml
├── module1/
│ └── pom.xml
├── module2/
│ └── pom.xml
└── module3/
└── pom.xml
```
mvn clean install
```
### Mettre en œuvre les compilations parallèles
mvn -T 4C clean install
.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
build:
script:
- mvn clean install -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -am -amd -fae
<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 :
Private-Token comme nom et ${env.GITLAB_TOKEN} comme valeur.Deploy-Token comme nom et ${env.GITLAB_DEPLOY_TOKEN} comme valeur.Private-Token comme nom et ${env.GITLAB_ACCESS_TOKEN} comme valeur.Job-Token comme nom et ${CI_JOB_TOKEN} comme valeur.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 !
Cet article de blog vous a plu ou vous avez des questions ou des commentaires ? Partagez vos réflexions en créant un sujet dans le forum de la communauté GitLab.
Donnez votre avis