102 lines
3.4 KiB
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
|
|
"""
|
|
}
|
|
}
|
|
} |