Skip to content
Snippets Groups Projects
Commit f10b30a8 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-1518 OZG-1741 add Jenkinsfile

parent 6df88223
No related branches found
No related tags found
No related merge requests found
def FAILED_STAGE
pipeline {
agent {
node {
label 'jenkins-worker'
}
}
environment {
BLUE_OCEAN_URL = "https://jenkins.ozg-sh.de/blue/organizations/jenkins/kop-common/detail/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/pipeline"
RELEASE_REGEX = /\d+.\d+.\d+/
SNAPSHOT_REGEX = /\d+.\d+.\d+-SNAPSHOT/
}
options {
timeout(time: 1, unit: 'HOURS')
disableConcurrentBuilds()
buildDiscarder(logRotator(numToKeepStr: '5'))
}
stages {
stage('Check Version') {
steps {
script {
FAILED_STAGE = env.STAGE_NAME
def rootPom = readMavenPom file: 'pom.xml'
def rootVersion = rootPom.version
def dependenciesPom = readMavenPom file: 'kop-common-dependencies/pom.xml'
def dependenciesVersion = dependenciesPom.parent.version
def parentPom = readMavenPom file: 'kop-common-parent/pom.xml'
def parentVersion = parentPom.parent.version
if(env.BRANCH_NAME == 'release'){
if ( !(rootVersion ==~ RELEASE_REGEX) || !(dependenciesVersion ==~ RELEASE_REGEX) || !(parentVersion ==~ RELEASE_REGEX)) {
error("Keine Release Version für Branch ${env.BRANCH_NAME}.")
}
} else {
if ( !(rootVersion ==~ SNAPSHOT_REGEX) || !(dependenciesVersion ==~ SNAPSHOT_REGEX) || !(parentVersion ==~ SNAPSHOT_REGEX)) {
error("Keine Snapshot Version für Branch ${env.BRANCH_NAME}.")
}
}
if( !(rootVersion == dependenciesVersion && rootVersion == parentVersion)){
error("Versionen sind nicht identisch")
}
}
}
}
stage('Build Kop-Common') {
steps {
script {
FAILED_STAGE=env.STAGE_NAME
}
container("maven-17"){
configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
sh 'mvn --version'
sh 'mvn -s $MAVEN_SETTINGS clean install spring-boot:build-image -Dmaven.wagon.http.retryHandler.count=3'
}
script {
try {
if (env.BRANCH_NAME == 'master') {
withSonarQubeEnv('sonarqube-ozg-sh'){
sh 'mvn sonar:sonar'
}
}
} catch (Exception e) {
unstable("SonarQube failed")
}
}
}
}
post {
always{
junit testResults: '**/target/surefire-reports/*.xml', skipPublishingChecks: true
}
}
}
stage('Deploy Kop-Common to Nexus'){
when {
anyOf {
branch 'master'
branch 'release'
}
}
steps {
script {
FAILED_STAGE = env.STAGE_NAME
}
container('maven-17') {
configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
sh 'mvn -s $MAVEN_SETTINGS -DskipTests deploy'
}
}
}
}
stage('Push Docker image') {
steps {
script {
FAILED_STAGE=env.STAGE_NAME
def pom = readMavenPom file: 'pom.xml'
def version = pom.version
container("docker") {
withCredentials([usernamePassword(credentialsId: 'jenkins-docker-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) {
sh 'docker login docker.ozg-sh.de -u ${USER} -p ${PASSWORD}'
//kop-common-dependencies
sh "docker tag docker.ozg-sh.de/kop-common-dependencies:build-latest docker.ozg-sh.de/kop-common-dependencies:${env.BRANCH_NAME}-${version}"
sh "docker push docker.ozg-sh.de/kop-common-dependencies:${env.BRANCH_NAME}-${version}"
if (env.BRANCH_NAME == 'master') {
sh 'docker tag docker.ozg-sh.de/kop-common-dependencies:build-latest docker.ozg-sh.de/kop-common-dependencies:snapshot-latest'
sh 'docker push docker.ozg-sh.de/kop-common-dependencies:snapshot-latest'
}
if (env.BRANCH_NAME == 'release') {
sh 'docker tag docker.ozg-sh.de/kop-common-dependencies:build-latest docker.ozg-sh.de/kop-common-dependencies:latest'
sh 'docker push docker.ozg-sh.de/kop-common-dependencies:latest'
}
//kop-common-parent
sh "docker tag docker.ozg-sh.de/kop-common-parent:build-latest docker.ozg-sh.de/kop-common-parent:${env.BRANCH_NAME}-${version}"
sh "docker push docker.ozg-sh.de/kop-common-parent:${env.BRANCH_NAME}-${version}"
if (env.BRANCH_NAME == 'master') {
sh 'docker tag docker.ozg-sh.de/kop-common-parent:build-latest docker.ozg-sh.de/kop-common-parent:snapshot-latest'
sh 'docker push docker.ozg-sh.de/kop-common-parent:snapshot-latest'
}
if (env.BRANCH_NAME == 'release') {
sh 'docker tag docker.ozg-sh.de/kop-common-parent:build-latest docker.ozg-sh.de/kop-common-parent:latest'
sh 'docker push docker.ozg-sh.de/kop-common-parent:latest'
}
}
}
}
}
}
}
post {
failure {
script {
if (env.BRANCH_NAME == 'master') {
slackSend(color: "danger", message: "Kop-Common: Build Failed. Stage: ${FAILED_STAGE} Build-ID: <${BLUE_OCEAN_URL}|${env.BUILD_NUMBER}>")
}
}
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment