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 -Pdocker.rdbversion=5' 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/rdbDocker5/ncore-<%%RESERVED_NAME%%>.fdb /docker-projects/${params.STAND_ID}/db/<%%RESERVED_NAME%%>.fdb" sh "chown -R :312 /docker-projects/${params.STAND_ID}" sh "chmod -R g+w /docker-projects/${params.STAND_ID}" script { def content = readFile "/docker-projects/${params.STAND_ID}/docker-compose.yml" def updatedContent = content.replaceAll('', params.STAND_ID) writeFile file: "/docker-projects/${params.STAND_ID}/docker-compose.yml", text: updatedContent } } } 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/rdbDocker5 && docker build -t ${rdbImage} ." sh "docker tag ${rdbImage} ${lrdbImage}" sh "docker push ${rdbImage}" sh "docker push ${lrdbImage}" } } } } } post { success { echo "Проект ${env.PRODUCT_NAME} успешно собран на версии ${env.VERSION}" } failure { echo "Проект ${env.PRODUCT_NAME} не собрался на версии ${env.VERSION}!" } } }