Files
ncore-sample/Jenkinsfile

82 lines
2.8 KiB
Groovy

pipeline {
agent any
environment {
PRODUCT_NAME = '<%%RESERVED_NAME%%>'
PRODUCT_GROUP = '<%%RESERVED_GROUPNAME%%>'
}
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 appImage = "<%%FACTORY_REGISTRY_IMAGE%%>:${env.VERSION}"
sh "cd build/docker && docker build -t ${appImage} ."
sh "docker push ${appImage}"
def rdbImage = "<%%FACTORY_REGISTRY_IMAGE%%>-db:${env.VERSION}"
sh "cd build/docker && docker build -t ${rdbImage} ."
sh "docker push ${rdbImage}"
def udbImage = "<%%FACTORY_REGISTRY_IMAGE%%>-update-db:${env.VERSION}"
sh "cd build/docker && docker build -t ${udbImage} ."
sh "docker push ${udbImage}"
}
}
}
}
}
post {
success {
echo "Проект ${env.PRODUCT_NAME} успешно собран на версии ${env.VERSION}"
}
failure {
echo "Проект ${env.PRODUCT_NAME} не собрался на версии ${env.VERSION}!"
}
}
}