Files
ncore-sample/Jenkinsfile

88 lines
3.4 KiB
Groovy

pipeline {
agent { label 'docker' }
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")
echo "$VERSION"
''',
returnStdout: true
).trim()
}
}
}
stage('Make gradlew executable') {
steps {
sh 'chmod +x ./gradlew'
}
}
stage('Build with Gradle and Prepare DockerDist') {
steps {
sh './gradlew clean --refresh-dependencies'
sh './gradlew nTDC build dockerFile dockerUD rdbDockerFile distDockerCompose -Pdocker.rdbversion=5'
sh "mkdir -p /docker-projects/${params.STAND_ID}"
sh "mkdir -p /docker-projects/${params.STAND_ID}/db"
sh "mkdir -p /docker-projects/${params.STAND_ID}/logs"
sh "mkdir -p /docker-projects/${params.STAND_ID}/rdblogs"
sh "cp -r build/distDockerCompose/* /docker-projects/${params.STAND_ID}/"
sh "cp build/rdbDocker5/ncore-<%%RESERVED_NAME%%>.fdb /docker-projects/${params.STAND_ID}/db/<%%RESERVED_NAME%%>.fdb"
sh "chown -R :312 /docker-projects/${params.STAND_ID}"
}
}
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 <%%FACTORY_REGISTRY_REPO%%>
'''
def appImage = "<%%FACTORY_REGISTRY_IMAGE%%>:${env.VERSION}"
def lappImage = "<%%FACTORY_REGISTRY_IMAGE%%>:latest"
sh "cd build/docker && docker build -t ${appImage} ."
sh "docker tag ${appImage} ${lappImage}"
sh "docker push ${appImage}"
sh "docker push ${lappImage}"
def rdbImage = "<%%FACTORY_REGISTRY_IMAGE%%>-db:${env.VERSION}"
def lrdbImage = "<%%FACTORY_REGISTRY_IMAGE%%>-db:latest"
sh "cd build/rdbDocker5 && docker build -t ${rdbImage} ."
sh "docker tag ${rdbImage} ${lrdbImage}"
sh "docker push ${rdbImage}"
sh "docker push ${lrdbImage}"
}
}
}
}
}
post {
success {
echo "Проект ${env.PRODUCT_NAME} успешно собран на версии ${env.VERSION}"
}
failure {
echo "Проект ${env.PRODUCT_NAME} не собрался на версии ${env.VERSION}!"
}
}
}