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 ''' set -e ./gradlew clean --refresh-dependencies --stacktrace ./gradlew nTDC build dockerFile dockerUD rdbDockerFile distDockerCompose --stacktrace STAND_DIR=/docker-projects/${params.STAND_ID} mkdir -p $STAND_DIR cp -r build/distDockerCompose/* $STAND_DIR/ mkdir -p $STAND_DIR/db cp build/rdbDocker/ncore-NAPI.fdb $STAND_DIR/db/NAPI.fdb mkdir -p $STAND_DIR/logs mkdir -p $STAND_DIR/rdblogs ''' } } 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}!" } } }