Files
Jenkins-Pipeline/Nest/build-docker-image.groovy

102 lines
3.4 KiB
Groovy

pipeline {
agent any
parameters {
string(
name: 'REPO_URL',
defaultValue: 'https://git.crowmate.fr/crowmate/Nest.git',
description: 'Gitea repository URL to clone'
)
string(
name: 'BRANCH',
defaultValue: 'main',
description: 'Branch to build'
)
string(
name: 'IMAGE_TAG',
defaultValue: 'latest',
description: 'Docker image tag (e.g. 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 "Repository cloned"
}
}
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 "Connected to Gitea registry"
'''
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 built and pushed successfully (tag: ${params.IMAGE_TAG})"
}
failure {
echo "Build/push failed"
}
always {
// Clean local images to avoid filling up disk space
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
"""
}
}
}