Update Jenkinsfile

This commit is contained in:
Sofiia Churikova 2025-05-02 02:54:12 +03:00
parent 355fc0afff
commit e32f8e565e

179
Jenkinsfile vendored
View file

@ -1,81 +1,102 @@
pipeline { pipeline {
agent any agent any
tools { tools {
maven 'Maven' maven 'Maven'
} }
stages { stages {
stage('Merge Request Pipeline') { stage('Merge Request Pipeline') {
when { when {
not { branch 'main' } not { branch 'main' }
} }
stages { stages {
stage('Checkstyle') { stage('Checkstyle') {
steps { steps {
sh 'mvn checkstyle:checkstyle' sh 'mvn checkstyle:checkstyle'
} }
post { post {
always { always {
archiveArtifacts artifacts: 'target/checkstyle-result.xml', allowEmptyArchive: true archiveArtifacts artifacts: 'target/checkstyle-result.xml', allowEmptyArchive: true
} }
} }
} }
stage('Test') { stage('Test') {
steps { steps {
sh 'mvn test' sh 'mvn test'
} }
post { post {
always { always {
junit 'target/surefire-reports/*.xml' junit 'target/surefire-reports/*.xml'
} }
} }
} }
stage('Build') { stage('Build') {
steps { steps {
sh 'mvn clean package -DskipTests' sh 'mvn clean package -DskipTests'
} }
post { post {
success { success {
archiveArtifacts artifacts: 'target/*.jar', fingerprint: true archiveArtifacts artifacts: 'target/*.jar', fingerprint: true
} }
} }
} }
stage('Create Docker Image') { stage('Create Docker Image') {
steps { agent {
script { docker {
def shortCommit = sh(script: "git rev-parse --short HEAD", returnStdout: true).trim() image 'docker:dind'
args '-v /var/run/docker.sock:/var/run/docker.sock'
withCredentials([usernamePassword(credentialsId: 'nexus-credentials', }
usernameVariable: 'NEXUS_USERNAME', }
passwordVariable: 'NEXUS_PASSWORD')]) { steps {
script {
sh "docker build -f Dockerfile.multi -t ${env.NEXUS_SERVER}:${env.NEXUS_PORT_MR}/${env.NEXUS_REPO_MR}:${shortCommit} ." def shortCommit = sh(script: "git rev-parse --short HEAD", returnStdout: true).trim()
sh "docker login ${env.NEXUS_SERVER}:${env.NEXUS_PORT_MR} -u ${NEXUS_USERNAME} -p ${NEXUS_PASSWORD}" withCredentials([usernamePassword(credentialsId: 'nexus-credentials',
sh "docker push ${env.NEXUS_SERVER}:${env.NEXUS_PORT_MR}/${env.NEXUS_REPO_MR}:${shortCommit}" usernameVariable: 'NEXUS_USERNAME',
} passwordVariable: 'NEXUS_PASSWORD')]) {
} sh "docker build -f Dockerfile.multi -t ${env.NEXUS_SERVER}:${env.NEXUS_PORT_MR}/${env.NEXUS_REPO_MR}:${shortCommit} ."
} sh "docker login ${env.NEXUS_SERVER}:${env.NEXUS_PORT_MR} -u ${NEXUS_USERNAME} -p ${NEXUS_PASSWORD}"
} sh "docker push ${env.NEXUS_SERVER}:${env.NEXUS_PORT_MR}/${env.NEXUS_REPO_MR}:${shortCommit}"
} }
} }
stage('Main Branch Pipeline') { }
when { }
branch 'main' }
} }
steps { stage('Main Branch Pipeline') {
script { when {
def shortCommit = sh(script: "git rev-parse --short HEAD", returnStdout: true).trim() branch 'main'
sh 'mvn clean package -DskipTests' }
stages {
withCredentials([usernamePassword(credentialsId: 'nexus-credentials', stage('Build') {
usernameVariable: 'NEXUS_USERNAME', steps {
passwordVariable: 'NEXUS_PASSWORD')]) { sh 'mvn clean package -DskipTests'
}
sh "docker build -f Dockerfile.multi -t ${env.NEXUS_SERVER}:${env.NEXUS_PORT_MAIN}/${env.NEXUS_REPO_MAIN}:${shortCommit} ." post {
sh "docker login ${env.NEXUS_SERVER}:${env.NEXUS_PORT_MAIN} -u ${NEXUS_USERNAME} -p ${NEXUS_PASSWORD}" success {
sh "docker push ${env.NEXUS_SERVER}:${env.NEXUS_PORT_MAIN}/${env.NEXUS_REPO_MAIN}:${shortCommit}" archiveArtifacts artifacts: 'target/*.jar', fingerprint: true
} }
} }
} }
} stage('Create Docker Image') {
} agent {
docker {
image 'docker:dind'
args '-v /var/run/docker.sock:/var/run/docker.sock'
}
}
steps {
script {
def shortCommit = sh(script: "git rev-parse --short HEAD", returnStdout: true).trim()
withCredentials([usernamePassword(credentialsId: 'nexus-credentials',
usernameVariable: 'NEXUS_USERNAME',
passwordVariable: 'NEXUS_PASSWORD')]) {
sh "docker build -f Dockerfile.multi -t ${env.NEXUS_SERVER}:${env.NEXUS_PORT_MAIN}/${env.NEXUS_REPO_MAIN}:${shortCommit} ."
sh "docker login ${env.NEXUS_SERVER}:${env.NEXUS_PORT_MAIN} -u ${NEXUS_USERNAME} -p ${NEXUS_PASSWORD}"
sh "docker push ${env.NEXUS_SERVER}:${env.NEXUS_PORT_MAIN}/${env.NEXUS_REPO_MAIN}:${shortCommit}"
}
}
}
}
}
}
}
} }