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 and Prepare DockerDist') { steps { sh './gradlew clean --refresh-dependencies' sh './gradlew nTDC build dockerFile dockerUD rdbDockerFile distDockerCompose' sh "mkdir -p /docker-projects/${params.STAND_ID}" sh "mkdir -p /docker-projects/${params.STAND_ID}/db" sh "mkdir -p /docker-projects/${params.STAND_ID}/logs" sh "mkdir -p /docker-projects/${params.STAND_ID}/rdblogs" sh "cp -r build/distDockerCompose/* /docker-projects/${params.STAND_ID}/" sh "cp build/rdbDocker/ncore-NAPI.fdb /docker-projects/${params.STAND_ID}/db/NAPI.fdb" } } 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}" def lappImage = "<%%FACTORY_REGISTRY_IMAGE%%>:latest" sh "cd build/docker && docker build -t ${appImage} ." sh "docker tag ${appImage} ${lappImage}" sh "docker push ${appImage}" sh "docker push ${lappImage}" def rdbImage = "<%%FACTORY_REGISTRY_IMAGE%%>-db:${env.VERSION}" def lrdbImage = "<%%FACTORY_REGISTRY_IMAGE%%>-db:latest" sh "cd build/rdbDocker && docker build -t ${rdbImage} ." sh "docker tag ${rdbImage} ${lrdbImage}" sh "docker push ${rdbImage}" sh "docker push ${lrdbImage}" def udbImage = "<%%FACTORY_REGISTRY_IMAGE%%>-update-db:${env.VERSION}" def ludbImage = "<%%FACTORY_REGISTRY_IMAGE%%>-update-db:latest" sh "cd build/docker-tools/uD && docker build -t ${udbImage} ." sh "docker tag ${udbImage} ${ludbImage}" sh "docker push ${udbImage}" sh "docker push ${ludbImage}" } } } } } post { success { echo "Проект ${env.PRODUCT_NAME} успешно собран на версии ${env.VERSION}" } failure { echo "Проект ${env.PRODUCT_NAME} не собрался на версии ${env.VERSION}!" } } }