feat : Add Jenkins pipeline scripts for building Docker images and deploying stacks
This commit is contained in:
102
Nest/build-docker-image.groovy
Normal file
102
Nest/build-docker-image.groovy
Normal file
@@ -0,0 +1,102 @@
|
||||
pipeline {
|
||||
agent any
|
||||
|
||||
parameters {
|
||||
string(
|
||||
name: 'REPO_URL',
|
||||
defaultValue: 'https://git.crowmate.fr/crowmate/Nest.git',
|
||||
description: 'URL du repo Gitea à cloner'
|
||||
)
|
||||
string(
|
||||
name: 'BRANCH',
|
||||
defaultValue: 'main',
|
||||
description: 'Branche à builder'
|
||||
)
|
||||
string(
|
||||
name: 'IMAGE_TAG',
|
||||
defaultValue: 'latest',
|
||||
description: 'Tag des images Docker (ex: latest, v1.0.0)'
|
||||
)
|
||||
}
|
||||
|
||||
environment {
|
||||
GITEA_CREDENTIALS_ID = 'gitea-token'
|
||||
REGISTRY = 'git.crowmate.fr'
|
||||
REGISTRY_OWNER = 'crowmate'
|
||||
}
|
||||
|
||||
stages {
|
||||
|
||||
stage('Clone') {
|
||||
steps {
|
||||
cleanWs()
|
||||
checkout([
|
||||
$class: 'GitSCM',
|
||||
branches: [[name: "*/${params.BRANCH}"]],
|
||||
userRemoteConfigs: [[
|
||||
url: params.REPO_URL,
|
||||
credentialsId: env.GITEA_CREDENTIALS_ID
|
||||
]]
|
||||
])
|
||||
echo "✅ Repo cloné"
|
||||
}
|
||||
}
|
||||
|
||||
stage('Build & Push images') {
|
||||
steps {
|
||||
withCredentials([usernamePassword(
|
||||
credentialsId: env.GITEA_CREDENTIALS_ID,
|
||||
usernameVariable: 'REGISTRY_USER',
|
||||
passwordVariable: 'REGISTRY_PASS'
|
||||
)]) {
|
||||
sh '''
|
||||
echo "$REGISTRY_PASS" | docker login ''' + env.REGISTRY + ''' -u "$REGISTRY_USER" --password-stdin
|
||||
echo "✅ Connecté au registry Gitea"
|
||||
'''
|
||||
|
||||
sh """
|
||||
echo "🔨 Build nest-api..."
|
||||
docker build -t ${env.REGISTRY}/${env.REGISTRY_OWNER}/nest-api:${params.IMAGE_TAG} ./nest-backend
|
||||
|
||||
echo "🔨 Build nest-front..."
|
||||
docker build -t ${env.REGISTRY}/${env.REGISTRY_OWNER}/nest-front:${params.IMAGE_TAG} ./nest-front
|
||||
|
||||
echo "🔨 Build nest-intra..."
|
||||
docker build -t ${env.REGISTRY}/${env.REGISTRY_OWNER}/nest-intra:${params.IMAGE_TAG} ./nest-intra
|
||||
"""
|
||||
|
||||
sh """
|
||||
echo "📤 Push nest-api..."
|
||||
docker push ${env.REGISTRY}/${env.REGISTRY_OWNER}/nest-api:${params.IMAGE_TAG}
|
||||
|
||||
echo "📤 Push nest-front..."
|
||||
docker push ${env.REGISTRY}/${env.REGISTRY_OWNER}/nest-front:${params.IMAGE_TAG}
|
||||
|
||||
echo "📤 Push nest-intra..."
|
||||
docker push ${env.REGISTRY}/${env.REGISTRY_OWNER}/nest-intra:${params.IMAGE_TAG}
|
||||
"""
|
||||
|
||||
sh "docker logout ${env.REGISTRY}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
post {
|
||||
success {
|
||||
echo "🎉 Images buildées et pushées avec succès (tag: ${params.IMAGE_TAG})"
|
||||
}
|
||||
failure {
|
||||
echo "💥 Échec du build/push"
|
||||
}
|
||||
always {
|
||||
// Nettoyage des images locales pour ne pas saturer le disque
|
||||
sh """
|
||||
docker rmi ${env.REGISTRY}/${env.REGISTRY_OWNER}/nest-api:${params.IMAGE_TAG} || true
|
||||
docker rmi ${env.REGISTRY}/${env.REGISTRY_OWNER}/nest-front:${params.IMAGE_TAG} || true
|
||||
docker rmi ${env.REGISTRY}/${env.REGISTRY_OWNER}/nest-intra:${params.IMAGE_TAG} || true
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user