From fb1944d8d9af2e58b365a7cb1c66fa45ee34a001 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9=20=D0=A2=D0=BE=D0=BB?= =?UTF-8?q?=D1=81=D1=82=D1=8B=D1=85?= Date: Fri, 30 Jan 2026 17:57:27 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=B1=D0=B0=D0=B7=D0=BE=D0=B2=D1=8B=D0=B9=20Jenkinsfi?= =?UTF-8?q?le?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..32b2232 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,85 @@ +pipeline { + agent any + + environment { + REGISTRY = 'src.red-soft.ru' + PRODUCT_NAME = 'sample' + PRODUCT_GROUP = 'biz.redsoft.sample' + VERSION = '' + } + + stages { + stage('Checkout') { + steps { + checkout scm + } + } + + stage('Extract VERSION') { + steps { + script { + def versionFile = "src/main/resources/META-INF/ncore-product/${params.PRODUCT_GROUP}/version.properties" + if (!fileExists(versionFile)) { + error "Version file not found: ${versionFile}" + } + def versionText = readFile(file: versionFile) + def matcher = versionText =~ /version=(.+?)(-\[A-Za-z\]+)?/ + if (matcher) { + env.VERSION = matcher[0][1] + echo "Extracted VERSION: ${env.VERSION}" + } else { + error "Failed to extract version from ${versionFile}" + } + } + } + } + + stage('Make gradlew executable') { + steps { + sh 'chmod +x ./gradlew' + } + } + + stage('Build with Gradle') { + steps { + sh './gradlew clean' + sh './gradlew nTDC nbackup build copyDist publish dockerFile dockerUD rdbDockerFile' + } + } + + 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 $REGISTRY + ''' + def REPO_NAME = "${PRODUCT_GROUP.toLowerCase()}/${PRODUCT_NAME.toLowerCase()}" + def appImage = "${REGISTRY}/${REPO_NAME}:${VERSION}" + sh "docker build -t ${appImage} -f build/docker/Dockerfile ." + sh "docker push ${appImage}" + + def rdbImage = "${REGISTRY}/${REPO_NAME}-db:${VERSION}" + sh "docker build -t ${rdbImage} -f build/rdbDocker/Dockerfile ." + sh "docker push ${rdbImage}" + + def udbImage = "${REGISTRY}/${REPO_NAME}-update-db:${VERSION}" + sh "docker build -t ${udbImage} -f build/docker-tools/uD/Dockerfile ." + sh "docker push ${udbImage}" + + docker logout $REGISTRY + } + } + } + } + } + + post { + success { + echo "Проект ${PRODUCT_NAME} успешно собран на версии ${VERSION}" + } + failure { + echo "Проект ${PRODUCT_NAME} не собрался на версии ${VERSION}!" + } + } +} \ No newline at end of file