Files
ncore-sample/Jenkinsfile
2026-01-30 18:02:33 +03:00

85 lines
3.0 KiB
Groovy

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/${env.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 = "${env.PRODUCT_GROUP.toLowerCase()}/${env.PRODUCT_NAME.toLowerCase()}"
def appImage = "${env.REGISTRY}/${REPO_NAME}:${env.VERSION}"
sh "docker build -t ${appImage} -f build/docker/Dockerfile ."
sh "docker push ${appImage}"
def rdbImage = "${env.REGISTRY}/${REPO_NAME}-db:${env.VERSION}"
sh "docker build -t ${rdbImage} -f build/rdbDocker/Dockerfile ."
sh "docker push ${rdbImage}"
def udbImage = "${env.REGISTRY}/${REPO_NAME}-update-db:${env.VERSION}"
sh "docker build -t ${udbImage} -f build/docker-tools/uD/Dockerfile ."
sh "docker push ${udbImage}"
docker logout ${env.REGISTRY}
}
}
}
}
}
post {
success {
echo "Проект ${env.PRODUCT_NAME} успешно собран на версии ${env.VERSION}"
}
failure {
echo "Проект ${env.PRODUCT_NAME} не собрался на версии ${env.VERSION}!"
}
}
}