diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..32b2232 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,85 @@ +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/${params.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 = "${PRODUCT_GROUP.toLowerCase()}/${PRODUCT_NAME.toLowerCase()}" + def appImage = "${REGISTRY}/${REPO_NAME}:${VERSION}" + sh "docker build -t ${appImage} -f build/docker/Dockerfile ." + sh "docker push ${appImage}" + + def rdbImage = "${REGISTRY}/${REPO_NAME}-db:${VERSION}" + sh "docker build -t ${rdbImage} -f build/rdbDocker/Dockerfile ." + sh "docker push ${rdbImage}" + + def udbImage = "${REGISTRY}/${REPO_NAME}-update-db:${VERSION}" + sh "docker build -t ${udbImage} -f build/docker-tools/uD/Dockerfile ." + sh "docker push ${udbImage}" + + docker logout $REGISTRY + } + } + } + } + } + + post { + success { + echo "Проект ${PRODUCT_NAME} успешно собран на версии ${VERSION}" + } + failure { + echo "Проект ${PRODUCT_NAME} не собрался на версии ${VERSION}!" + } + } +} \ No newline at end of file