pipeline { agent { label 'docker' } environment { PRODUCT_NAME = '<%%RESERVED_NAME%%>' PRODUCT_GROUP = '<%%RESERVED_GROUPNAME%%>' } stages { stage('Checkout') { steps { checkout scm } } stage('Extract VERSION') { steps { script { env.VERSION = sh( script: ''' set -e VERSION_FILE=src/main/resources/META-INF/ncore-product/$PRODUCT_GROUP/version.properties VERSION=$(sed -n 's/^version=//p' "$VERSION_FILE") echo "$VERSION" ''', returnStdout: true ).trim() } } } stage('Make gradlew executable') { steps { sh 'chmod +x ./gradlew' } } stage('Build with Gradle') { steps { sh './gradlew clean --refresh-dependencies' sh './gradlew nTDC build dockerFile dockerUD rdbDockerFile distDockerCompose' } } stage('Build and Push Docker Images') { steps { script { withCredentials([usernamePassword(credentialsId: 'build', usernameVariable: 'USER', passwordVariable: 'PASS')]) { sh ''' echo "$PASS" | docker login --username "$USER" --password-stdin <%%FACTORY_REGISTRY_REPO%%> ''' def appImage = "<%%FACTORY_REGISTRY_IMAGE%%>:${env.VERSION}" sh "cd build/docker && docker build -t ${appImage} ." sh "docker push ${appImage}" def rdbImage = "<%%FACTORY_REGISTRY_IMAGE%%>-db:${env.VERSION}" sh "cd build/docker && docker build -t ${rdbImage} ." sh "docker push ${rdbImage}" def udbImage = "<%%FACTORY_REGISTRY_IMAGE%%>-update-db:${env.VERSION}" sh "cd build/docker && docker build -t ${udbImage} ." sh "docker push ${udbImage}" } } } } } post { success { echo "Проект ${env.PRODUCT_NAME} успешно собран на версии ${env.VERSION}" } failure { echo "Проект ${env.PRODUCT_NAME} не собрался на версии ${env.VERSION}!" } } } ncoreRestoreDB{ verbose = true }