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 """ } } }