88 lines
3.2 KiB
Groovy
88 lines
3.2 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)
|
|
echo versionText
|
|
def matcher = versionText =~ /version=(.*)(-[A-z]*)?/
|
|
if (matcher) {
|
|
env.VERSION = matcher[0][1]
|
|
if (env.VERSION == null)
|
|
error "Failed to extract version from ${versionFile}"
|
|
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}!"
|
|
}
|
|
}
|
|
} |