74 lines
2.1 KiB
Plaintext
74 lines
2.1 KiB
Plaintext
pipeline {
|
|
agent any
|
|
|
|
tools {
|
|
maven 'mvn'
|
|
nodejs 'npm'
|
|
}
|
|
|
|
environment {
|
|
JAVA_HOME = '/opt/java/openjdk'
|
|
PATH = "${JAVA_HOME}/bin:${env.PATH}"
|
|
SPRING_IMAGE_NAME = 'spring-jenkins'
|
|
ANGULAR_IMAGE_NAME = 'angular-jenkins'
|
|
IMAGE_TAG = 'latest'
|
|
COMPOSE_PROJECT = 'gameovergne-app'
|
|
}
|
|
|
|
stages {
|
|
stage('Checkout sur la branche dev') {
|
|
steps {
|
|
git branch: 'dev', url: 'https://gitea.vincent-guillet.fr/vincentguillet/gameovergne-app.git'
|
|
}
|
|
}
|
|
|
|
stage('Maven Build') {
|
|
steps {
|
|
dir('api') {
|
|
sh 'mvn clean package -DskipTests'
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Angular Build') {
|
|
steps {
|
|
dir('client') {
|
|
sh 'npm install'
|
|
sh 'npm run build'
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Spring Docker Build') {
|
|
steps {
|
|
sh 'docker build -t registry.vincent-guillet.fr/gameovergne-api:dev-latest ./api'
|
|
}
|
|
}
|
|
|
|
stage('Angular Docker Build') {
|
|
steps {
|
|
sh 'docker build -t registry.vincent-guillet.fr/gameovergne-client:dev-latest ./client'
|
|
}
|
|
}
|
|
|
|
stage('Deployment') {
|
|
steps {
|
|
withEnv([
|
|
"DOCKER_HOST=unix:///var/run/docker.sock",
|
|
"COMPOSE_PROJECT_NAME=${env.COMPOSE_PROJECT}"
|
|
]) {
|
|
sh '''
|
|
echo "=== Nettoyage des anciens conteneurs nommés ==="
|
|
docker rm -f gameovergne-mysql gameovergne-api gameovergne-client 2>/dev/null || true
|
|
|
|
echo "=== docker-compose down sur le projet courant ==="
|
|
docker-compose down -v || true
|
|
|
|
echo "=== (Re)création de la stack MySQL + Spring + Angular ==="
|
|
docker-compose up -d mysql spring angular
|
|
'''
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |