добавлен базовый Jenkinsfile

This commit is contained in:
2026-01-30 17:57:27 +03:00
parent 39f222797f
commit 1a9690f525

86
Jenkinsfile vendored Normal file
View File

@ -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}!"
}
}
}