-
Notifications
You must be signed in to change notification settings - Fork 0
/
Jenkinsfile
149 lines (123 loc) · 4.75 KB
/
Jenkinsfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
pipeline {
agent any
stages {
stage('Checkout') {
steps {
// Récupère le code source depuis GitHub
checkout scmGit(branches: [[name: '*/sidaoui']], extensions: [], userRemoteConfigs: [[credentialsId: 'sid-github-pwd', url: 'https://github.com/The-Red-Barons/Devops-Project.git']])
}}
stage('Clean the project') {
steps {
// Supprime tous les fichiers générés par la construction précédente
sh 'mvn clean'
}
}
stage('Build') {
steps {
// Compile le code source du projet en fichiers de classe exécutables
sh 'mvn package'
}
}
stage('Unit Tests') {
steps {
// Exécute les tests unitaires
sh 'mvn test'
}
post {
always {
// Publie les résultats des tests sur le rapport de build
junit '**/target/surefire-reports/*.xml'
}
}
}
stage('Code Coverage') {
steps {
// Exécute toujours la tâche JaCoCo
jacoco(
runAlways: true,
// Inclusions pour le rapport de couverture
inclusionPattern: '**/src/main/java/**/*.class',
// Exclusions pour le rapport de couverture
execPattern: '**/test/**/*.class'
)
}
}
stage('SonarQube Analysis') {
steps {
withSonarQubeEnv('sonarqube') {
sh 'mvn sonar:sonar'
}
}
}
stage('Build Docker Image'){
steps{
script{
sh 'docker build -t sidaouimohamedamine/gestion-station-ski .'
}
}
}
stage('Build Docker Image Front'){
steps{
script{
sh 'docker build -t sidaouimohamedamine/gestion-station-ski-front ./skiFront/ '
}
}
}
stage('Push Docker Backend Image to Docker Hub'){
steps{
script{
// Définit les variables d'environnement pour Docker Hub
env.DOCKER_USERNAME = "sidaouimohamedamine"
// Utilise withCredentials pour accéder aux informations d'identification Docker Hub
withCredentials([usernamePassword(credentialsId: 'dockerhub-pwd', usernameVariable: 'DOCKER_USERNAME', passwordVariable: 'DOCKER_PASSWORD')]) {
// Se connecte à Docker Hub
sh 'docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD'
// Poussette l'image vers Docker Hub
sh 'docker push sidaouimohamedamine/gestion-station-ski'
}
}
}
}
stage('Push Docker Frontend Image to Docker Hub'){
steps{
script{
// Définit les variables d'environnement pour Docker Hub
env.DOCKER_USERNAME = "sidaouimohamedamine"
// Utilise withCredentials pour accéder aux informations d'identification Docker Hub
withCredentials([usernamePassword(credentialsId: 'dockerhub-pwd', usernameVariable: 'DOCKER_USERNAME', passwordVariable: 'DOCKER_PASSWORD')]) {
// Se connecte à Docker Hub
sh 'docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD'
// Poussette l'image vers Docker Hub
sh 'docker push sidaouimohamedamine/gestion-station-ski-front'
}
}
}
}
stage('Deploy to Nexus') {
steps {
nexusArtifactUploader artifacts: [
[
artifactId: 'gestion-station-ski',
classifier: '',
file: "target/gestion-station-ski-1.0.jar",
type: 'jar'
]
],
credentialsId: 'nexus-user-credentials',
groupId: 'tn.esprit.spring',
nexusUrl: '192.168.43.116:8081',
nexusVersion: 'nexus3',
protocol: 'http',
repository: 'maven-nexus-repo',
version: "1.0.0" }
}
stage('Run Docker Compose') {
steps {
script {
// Exécute Docker Compose pour démarrer vos services
sh 'docker compose up -d'
}
}
}
}
}