|
@@ -1,38 +1,128 @@
|
|
-#!/usr/bin/env groovy
|
|
|
|
|
|
+def TAG
|
|
|
|
|
|
pipeline {
|
|
pipeline {
|
|
|
|
+ options {
|
|
|
|
+ disableConcurrentBuilds()
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ tools {
|
|
|
|
+ maven 'mvn_3.6.3'
|
|
|
|
+ }
|
|
|
|
|
|
- agent any
|
|
|
|
|
|
+ environment {
|
|
|
|
+ registry = "provectuslabs/kafka-ui-api"
|
|
|
|
+ registryCredential = 'docker-hub-credentials'
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ agent {
|
|
|
|
+ kubernetes {
|
|
|
|
+ label 'kafka-ui'
|
|
|
|
+ yaml '''
|
|
|
|
+apiVersion: v1
|
|
|
|
+kind: Pod
|
|
|
|
+spec:
|
|
|
|
+ containers:
|
|
|
|
+ - name: docker-client
|
|
|
|
+ image: docker:19.03.1
|
|
|
|
+ command:
|
|
|
|
+ - sleep
|
|
|
|
+ args:
|
|
|
|
+ - 99d
|
|
|
|
+ env:
|
|
|
|
+ - name: DOCKER_HOST
|
|
|
|
+ value: tcp://localhost:2375
|
|
|
|
+ volumeMounts:
|
|
|
|
+ - name: cache
|
|
|
|
+ mountPath: /tmp/repository
|
|
|
|
+ - name: docker-daemon
|
|
|
|
+ image: docker:19.03.1-dind
|
|
|
|
+ securityContext:
|
|
|
|
+ privileged: true
|
|
|
|
+ env:
|
|
|
|
+ - name: DOCKER_TLS_CERTDIR
|
|
|
|
+ value: ""
|
|
|
|
+ volumeMounts:
|
|
|
|
+ - name: cache
|
|
|
|
+ mountPath: /var/lib/docker
|
|
|
|
+ volumes:
|
|
|
|
+ - name: cache
|
|
|
|
+ hostPath:
|
|
|
|
+ path: /tmp
|
|
|
|
+ type: Directory
|
|
|
|
+'''
|
|
|
|
+ }
|
|
|
|
+ }
|
|
stages {
|
|
stages {
|
|
- stage('Test') {
|
|
|
|
|
|
+ stage('Create release branch') {
|
|
steps {
|
|
steps {
|
|
- echo 'Test...'
|
|
|
|
- sh 'ls -la'
|
|
|
|
|
|
+ git 'https://github.com/provectus/kafka-ui.git'
|
|
|
|
+ sh 'git checkout -b release'
|
|
|
|
+ sh 'git merge master'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
- stage('Merge master') {
|
|
|
|
|
|
+ stage('Build artifact') {
|
|
|
|
+ steps {
|
|
|
|
+ container('docker-client') {
|
|
|
|
+ sh "docker run -v ${WORKSPACE}:/usr/src/mymaven -v /tmp/repository:/root/.m2/repository -w /usr/src/mymaven maven:3.6.3-jdk-13 /bin/sh -c 'mvn versions:set -DremoveSnapshot && mvn clean install'"
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ post {
|
|
|
|
+ success {
|
|
|
|
+ archiveArtifacts(artifacts: '**/target/*.jar', allowEmptyArchive: true)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ stage('Tag release branch') {
|
|
steps {
|
|
steps {
|
|
script {
|
|
script {
|
|
- git 'https://github.com/provectus/kafka-ui.git'
|
|
|
|
- sh 'git checkout release'
|
|
|
|
- sh 'git merge master'
|
|
|
|
pom = readMavenPom file: 'pom.xml'
|
|
pom = readMavenPom file: 'pom.xml'
|
|
- tag = pom.version.replace("-SNAPSHOT", "")
|
|
|
|
- echo "Building version ${tag}"
|
|
|
|
-// sh "git tag -f v${tag}"
|
|
|
|
-// sh "git push -f --tags"
|
|
|
|
|
|
+ TAG = pom.version
|
|
|
|
+// sh 'git log $(git describe --tags --abbrev=0)..HEAD --oneline'
|
|
|
|
+ sh "git tag -f ${TAG}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- stage('Build') {
|
|
|
|
- tools {
|
|
|
|
- maven 'mvn_3.6.3'
|
|
|
|
|
|
+ stage('Build docker image') {
|
|
|
|
+ steps {
|
|
|
|
+ container('docker-client') {
|
|
|
|
+ dir(path: './kafka-ui-api') {
|
|
|
|
+ script {
|
|
|
|
+ dockerImage = docker.build( registry + ":$TAG", "--build-arg JAR_FILE=*.jar -f Dockerfile ." )
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
+ stage('Publish docker image') {
|
|
steps {
|
|
steps {
|
|
- sh 'cd ./kafka-ui-api && ./mvnw clean install -Pprod'
|
|
|
|
|
|
+ container('docker-client') {
|
|
|
|
+ script {
|
|
|
|
+ docker.withRegistry( '', registryCredential ) {
|
|
|
|
+ dockerImage.push()
|
|
|
|
+ dockerImage.push('latest')
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ stage('Remove unused docker image') {
|
|
|
|
+ steps{
|
|
|
|
+ container('docker-client') {
|
|
|
|
+ sh "docker rmi $registry:$TAG"
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ stage('Tag release') {
|
|
|
|
+ steps {
|
|
|
|
+ script {
|
|
|
|
+ sh "git push -f --tags"
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ post {
|
|
|
|
+ always {
|
|
|
|
+ cleanWs()
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|