1+ def VERSION
2+
3+ pipeline {
4+ options {
5+ disableConcurrentBuilds()
6+ }
7+
8+ tools {
9+ maven ' mvn_3.6.3'
10+ }
11+
12+ environment {
13+ registry = " provectuslabs/kafka-ui-api"
14+ registryCredential = ' docker-hub-credentials'
15+ }
16+
17+ agent {
18+ kubernetes {
19+ label ' kafka-ui'
20+ yaml '''
21+ apiVersion: v1
22+ kind: Pod
23+ spec:
24+ containers:
25+ - name: docker-client
26+ image: docker:19.03.1
27+ command:
28+ - sleep
29+ args:
30+ - 99d
31+ env:
32+ - name: DOCKER_HOST
33+ value: tcp://localhost:2375
34+ volumeMounts:
35+ - name: cache
36+ mountPath: /tmp/repository
37+ - name: docker-daemon
38+ image: docker:19.03.1-dind
39+ securityContext:
40+ privileged: true
41+ env:
42+ - name: DOCKER_TLS_CERTDIR
43+ value: ""
44+ volumeMounts:
45+ - name: cache
46+ mountPath: /var/lib/docker
47+ volumes:
48+ - name: cache
49+ hostPath:
50+ path: /tmp
51+ type: Directory
52+ '''
53+ }
54+ }
55+ stages {
56+ stage(' Checkout release branch' ) {
57+ when {
58+ expression { return env. GIT_BRANCH == ' origin/master' ; }
59+ }
60+ steps {
61+ sh ' git checkout -b release'
62+ }
63+ }
64+ stage(' Merge to release branch' ) {
65+ when {
66+ expression { return env. GIT_BRANCH == ' origin/master' ; }
67+ }
68+ steps {
69+ sh ' git merge origin/master'
70+ }
71+ }
72+ stage(' Remove SNAPSHOT from version' ) {
73+ steps {
74+ container(' docker-client' ) {
75+ sh " docker run -v $WORKSPACE :/usr/src/mymaven -v /tmp/repository:/root/.m2/repository -w /usr/src/mymaven maven:3.6.3-jdk-13 bash -c 'mvn versions:set -DremoveSnapshot'"
76+ }
77+ }
78+ }
79+ stage(' Tag release branch' ) {
80+ when {
81+ expression { return env. GIT_BRANCH == ' origin/master' ; }
82+ }
83+ steps {
84+ script {
85+ pom = readMavenPom file : ' pom.xml'
86+ VERSION = pom. version
87+ sh " git tag -f v$VERSION "
88+ }
89+ }
90+ }
91+ stage(' Build artifact' ) {
92+ steps {
93+ container(' docker-client' ) {
94+ sh " docker run -v $WORKSPACE :/usr/src/mymaven -v /tmp/repository:/root/.m2/repository -w /usr/src/mymaven maven:3.6.3-jdk-13 bash -c 'mvn clean install'"
95+ }
96+ }
97+ }
98+ stage(' Build docker image' ) {
99+ steps {
100+ container(' docker-client' ) {
101+ dir(path : ' ./kafka-ui-api' ) {
102+ script {
103+ dockerImage = docker. build( registry + " :$VERSION " , " --build-arg JAR_FILE=*.jar -f Dockerfile ." )
104+ }
105+ }
106+ }
107+ }
108+ }
109+ stage(' Publish docker image' ) {
110+ when {
111+ expression { return env. GIT_BRANCH == ' origin/master' ; }
112+ }
113+ steps {
114+ container(' docker-client' ) {
115+ script {
116+ docker. withRegistry( ' ' , registryCredential ) {
117+ dockerImage. push()
118+ dockerImage. push(' latest' )
119+ }
120+ }
121+ }
122+ }
123+ }
124+ stage(' Remove unused docker image' ) {
125+ steps{
126+ container(' docker-client' ) {
127+ sh " docker rmi $registry :$VERSION "
128+ }
129+ }
130+ }
131+ stage(' Create github release with text from commits' ) {
132+ when {
133+ expression { return env. GIT_BRANCH == ' origin/master' ; }
134+ }
135+ steps {
136+ script {
137+ withCredentials([usernamePassword(credentialsId : ' github-jenkins-internal-provectus' , passwordVariable : ' GIT_PASSWORD' , usernameVariable : ' GIT_USER' )]) {
138+ sh " git push -f --tags https://$GIT_USER :$GIT_PASSWORD @github.com/provectus/kafka-ui.git"
139+ sh " bash release_json.sh v$VERSION "
140+ sh " curl -XPOST -u $GIT_USER :$GIT_PASSWORD --data @/tmp/release.json https://api.github.com/repos/provectus/kafka-ui/releases"
141+ }
142+ }
143+ }
144+ }
145+ stage(' Checkout master' ) {
146+ when {
147+ expression { return env. GIT_BRANCH == ' origin/master' ; }
148+ }
149+ steps {
150+ sh ' git checkout origin/master'
151+ }
152+ }
153+ stage(' Increase version in master' ) {
154+ when {
155+ expression { return env. GIT_BRANCH == ' origin/master' ; }
156+ }
157+ steps {
158+ container(' docker-client' ) {
159+ sh " docker run -v $WORKSPACE :/usr/src/mymaven -v /tmp/repository:/root/.m2/repository -w /usr/src/mymaven maven:3.6.3-jdk-13 bash -c 'mvn build-helper:parse-version versions:set -DnewVersion=\\\$ {parsedVersion.majorVersion}.\\\$ {parsedVersion.minorVersion}.\\\$ {parsedVersion.nextIncrementalVersion}-SNAPSHOT versions:commit'"
160+ }
161+ }
162+ }
163+ stage(' Push to master' ) {
164+ when {
165+ expression { return env. GIT_BRANCH == ' origin/master' ; }
166+ }
167+ steps {
168+ script {
169+ withCredentials([usernamePassword(credentialsId : ' github-jenkins-internal-provectus' , passwordVariable : ' GIT_PASSWORD' , usernameVariable : ' GIT_USER' )]) {
170+ sh " git add ."
171+ sh " git -c user.name=\" $GIT_USER \" -c user.email=\"\" commit -m \" Increased version in pom.xml\" "
172+ sh " git push https://$GIT_USER :$GIT_PASSWORD @github.com/provectus/kafka-ui.git HEAD:master"
173+ }
174+ }
175+ }
176+ }
177+ }
178+ post {
179+ always {
180+ cleanWs()
181+ }
182+ }
183+ }
0 commit comments