Skip to content
Snippets Groups Projects
Commit 23e73ab9 authored by erwan.salmon's avatar erwan.salmon
Browse files

Mise à jour versions et CI

parent bac38420
Branches
Tags
No related merge requests found
......@@ -9,7 +9,7 @@
# Image Docker Maven par défaut
default:
image: alpine
image: docker.io/alpine
# Définition des étapes du pipeline
stages:
......@@ -30,10 +30,11 @@ cache:
paths:
- .m2/repository
- .sonar/cache
key: "$CI_JOB_NAME"
# Job Maven générique
.maven:
image: maven:3.9.0-eclipse-temurin-11
image: docker.io/maven:3.9.0-eclipse-temurin-17
variables:
# Configuration Maven
M2_SETTINGS: $CI_PROJECT_DIR/.m2-settings.xml
......@@ -64,7 +65,7 @@ compile:
stage: compilation
extends: .maven
script:
- mvn $MAVEN_CLI_OPTS -Dmaven.test.skip=true compile
- mvn $MAVEN_CLI_OPTS compile
artifacts:
paths:
- "**/target/"
......@@ -109,7 +110,6 @@ cobertura-convert:
$CI_PROJECT_DIR/ci-maven-demo-service/src/main/java/
$CI_PROJECT_DIR/ci-maven-demo-webapp/src/main/java/
> jacoco-report-aggregate/target/site/cobertura.xml'
needs: ["unit-test"]
artifacts:
reports:
coverage_report:
......@@ -127,8 +127,8 @@ sonarqube-check:
SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar" # Répertoire de cache pour la tâche d'analyse
GIT_DEPTH: "0" # Récupération de toutes les branches de git. Utile notamment pour le "git blame"
script:
- mvn $MAVEN_CLI_OPTS sonar:sonar -Dsonar.qualitygate.wait=true -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_TOKEN -Dsonar.projectKey=$SONAR_PROJECT_KEY
allow_failure: false
- mvn $MAVEN_CLI_OPTS sonar:sonar -Dsonar.qualitygate.wait=true -Dsonar.projectKey=$SONAR_PROJECT_KEY
allow_failure: true
rules:
# Lancement de l'étape uniquement lors d'un pipeline programmé
- if: $CI_PIPELINE_SOURCE == "schedule"
......@@ -155,11 +155,9 @@ site:
# Construction de l'archive
#======================================
# Construction du jar
build-artefact:
build-package:
stage: package
extends: .maven
dependencies:
- unit-test
script:
# Mis à jour du timestamp de dernière modification des fichiers compilés pour éviter une recompilation
- find . -name "*.class" -exec touch {} \+
......@@ -169,18 +167,17 @@ build-artefact:
- "**/target/"
expire_in: 1 hour
rules:
# Lancement de l'étape lors de la création d'un tag, d'une merge request ou d'un pipeline programmé
# Lancement de l'étape lors de la création d'un tag, d'une merge request
- if: $CI_COMMIT_TAG != null
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
#======================================
# Publication
#======================================
# Publication des rapports maven sur "gitlab pages"
pages:
image: alpine:latest
image: docker.io/alpine:latest
stage: publish
dependencies:
- site
script:
- mv target/staging public
- echo "Déploiement du site sur $CI_PAGES_URL"
......@@ -188,48 +185,49 @@ pages:
paths:
- public
# Permet de conserver 30j les anciennes versions des rapports dans les jobs
expire_in: 30 days
expire_in: 15 days
rules:
# Lancement de l'étape uniquement lors d'un pipeline programmé
- if: $CI_PIPELINE_SOURCE == "schedule"
# Publication du jar sur le dépôt gitlab
publish-artefact:
publish-package:
stage: publish
extends: .maven
dependencies:
- build-artefact
script:
# Mis à jour du timestamp de dernière modification des fichiers compilés pour éviter une recompilation
- find . -name "*.class" -exec touch {} \+
- mvn $MAVEN_CLI_OPTS -DskipTests=true -Ddependency-check.skip=true deploy
rules:
# Lancement de l'étape lors de la création d'un tag, d'une merge request ou d'un pipeline programmé
# Lancement de l'étape lors de la création d'un tag, d'une merge request
- if: $CI_COMMIT_TAG != null
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
# Publication de l'image docker
publish-docker-image:
publish-container:
stage: publish
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
before_script:
- cd ci-maven-demo-webapp
- IMAGE_NAME=ci-maven-demo-webapp:$APPVERSION
- IMAGE_FQN="${CI_REGISTRY_IMAGE}/${IMAGE_NAME}"
script:
- mv ci-maven-demo-webapp/target/ci-maven-demo-webapp-$CI_COMMIT_TAG.jar ci-maven-demo-webapp/target/jar-for-docker.jar
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
- /kaniko/executor --context $CI_PROJECT_DIR/ci-maven-demo-webapp --dockerfile $CI_PROJECT_DIR/ci-maven-demo-webapp/Dockerfile --destination $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
needs: ["build-artefact"]
dependencies:
- build-artefact
# Kaniko gère automatiquement l'accès au registre Gitlab
# (https://github.com/GoogleContainerTools/kaniko/pull/2040)
- /kaniko/executor --context . --dockerfile ./Dockerfile --destination $IMAGE_FQN
--build-arg app_jar=./target/ci-maven-demo-webapp-${APPVERSION}.jar
rules:
# Lancement de l'étape lors de la création d'un tag, d'une merge request ou d'un pipeline programmé
# Lancement de l'étape lors de la création d'un tag, d'une merge request
- if: $CI_COMMIT_TAG != null
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
#======================================
# Déploiement
#======================================
deploy-services:
image: bitnami/kubectl
image: docker.io/bitnami/kubectl
stage: deploy
script:
- kubectl apply -f deploy/service.yaml
......@@ -244,7 +242,7 @@ deploy-services:
- runner-externe
deploy-app:
image: bitnami/kubectl
image: docker.io/bitnami/kubectl
stage: deploy
script:
- sed -i 's%<IMAGE_PATH>:<VERSION>%'${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG}'%g' deploy/deployment.yaml
......
......@@ -6,7 +6,7 @@
<parent>
<groupId>demo.ci-maven-demo</groupId>
<artifactId>ci-maven-demo</artifactId>
<version>1.0.5</version>
<version>1.1.0</version>
</parent>
<artifactId>ci-maven-demo-service</artifactId>
......@@ -17,4 +17,4 @@
<scope>test</scope>
</dependency>
</dependencies>
</project>
\ No newline at end of file
</project>
FROM openjdk:11.0.11-jre-slim
VOLUME /tmp
ADD /target/jar-for-docker.jar app.jar
FROM eclipse-temurin:17-jre
ARG app_jar=path/to/app.jar
COPY ${app_jar} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
......@@ -6,7 +6,7 @@
<parent>
<groupId>demo.ci-maven-demo</groupId>
<artifactId>ci-maven-demo</artifactId>
<version>1.0.5</version>
<version>1.1.0</version>
</parent>
<artifactId>ci-maven-demo-webapp</artifactId>
......@@ -28,12 +28,6 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${dep.logback.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
......
......@@ -7,7 +7,7 @@
<parent>
<artifactId>ci-maven-demo</artifactId>
<groupId>demo.ci-maven-demo</groupId>
<version>1.0.5</version>
<version>1.1.0</version>
</parent>
<artifactId>jacoco-report-aggregate</artifactId>
......@@ -29,7 +29,7 @@
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.5</version>
<version>${plugin.jacoco.version}</version>
<executions>
<execution>
<id>report-aggregate</id>
......@@ -42,4 +42,4 @@
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
</project>
......@@ -6,11 +6,11 @@
<groupId>demo.ci-maven-demo</groupId>
<artifactId>ci-maven-demo</artifactId>
<version>1.0.5</version>
<version>1.1.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.7</version>
<version>3.0.4</version>
</parent>
<modules>
......@@ -20,16 +20,13 @@
</modules>
<properties>
<java.version>11</java.version>
<dep.logback.version>1.2.7</dep.logback.version>
<plugin.jcoco.version>0.8.7</plugin.jcoco.version>
<plugin.maven-site.version>3.9.1</plugin.maven-site.version>
<plugin.maven-info.version>3.1.2</plugin.maven-info.version>
<plugin.owasp.version>6.5.0</plugin.owasp.version>
<plugin.versions-maven.version>2.8.1</plugin.versions-maven.version>
<plugin.surefire.version>3.0.0-M5</plugin.surefire.version>
<log4j2.version>2.15.0</log4j2.version>
<java.version>17</java.version>
<plugin.jacoco.version>0.8.7</plugin.jacoco.version>
<plugin.maven-site.version>3.12.0</plugin.maven-site.version>
<plugin.maven-info.version>3.4.2</plugin.maven-info.version>
<plugin.owasp.version>8.1.2</plugin.owasp.version>
<plugin.versions-maven.version>2.15.0</plugin.versions-maven.version>
<plugin.surefire.version>3.0.0-M9</plugin.surefire.version>
<!-- Seul le module web est à déployer -->
<maven.deploy.skip>true</maven.deploy.skip>
......@@ -39,10 +36,7 @@
<profile>
<id>eco-ci-deploy</id>
<activation>
<property>
<name>eco-ci-activate</name>
<value>true</value>
</property>
<activeByDefault>true</activeByDefault>
</activation>
<distributionManagement>
<!-- Dépot des artefacts (jar) -->
......@@ -75,7 +69,7 @@
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${plugin.jcoco.version}</version>
<version>${plugin.jacoco.version}</version>
</plugin>
<!-- Site Maven-->
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment