From 1a9690f525ee8539a2c58df935f3e1141345a8a6 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 | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..df64193 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,86 @@ +pipeline { + agent any + + environment { + REGISTRY = 'src.red-soft.biz' + PRODUCT_NAME = 'sample' + PRODUCT_GROUP = 'biz.redsoft.sample' + } + + 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") + + if [[ ! "$VERSION" =~ ^[0-9]+(.[0-9]+)*(-[A-Za-z]+)?$ ]]; then + echo "Invalid version format: $VERSION" >&2 + exit 1 + fi + + echo "$VERSION" + ''', + returnStdout: true + ).trim() + } + } + } + + 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 = "${env.PRODUCT_GROUP.toLowerCase()}/${env.PRODUCT_NAME.toLowerCase()}" + def appImage = "${env.REGISTRY}/${REPO_NAME}:${env.VERSION}" + sh "cd build/docker && docker build -t ${appImage} ." + sh "docker push ${appImage}" + + def rdbImage = "${env.REGISTRY}/${REPO_NAME}-db:${env.VERSION}" + sh "cd build/docker && docker build -t ${rdbImage} ." + sh "docker push ${rdbImage}" + + def udbImage = "${env.REGISTRY}/${REPO_NAME}-update-db:${env.VERSION}" + sh "cd build/docker && docker build -t ${udbImage} ." + sh "docker push ${udbImage}" + + docker logout ${env.REGISTRY} + } + } + } + } + } + + post { + success { + echo "Проект ${env.PRODUCT_NAME} успешно собран на версии ${env.VERSION}" + } + failure { + echo "Проект ${env.PRODUCT_NAME} не собрался на версии ${env.VERSION}!" + } + } +} \ No newline at end of file