Skip to content

Commit e0290fc

Browse files
usbulatBulat Yusupov
andauthored
Ci cd (#84)
* initial commit * added timestamps and email recipient * Revert "added timestamps and email recipient" This reverts commit 4108570 * added steps to Jenkins pipeline * added steps to Jenkins pipeline * added script for creating release notes * fixed script for creating release notes * fixed script for creating release notes * Increased version * Revert "Increased version" This reverts commit 8694905 * added steps to Jenkins pipeline * Increased version * moved ci-cd from ci-cd branch to master * Revert "Increased version" This reverts commit 666ee94 * fixes in pipeline * fixed version for docker * fixed version for docker * testing PR build * testing PR build * testing PR build * testing PR build * testing PR build * added conditions to jenkinsfile * testing PR build * testing PR build * testing PR build * testing PR build * testing PR build * testing PR build * testing PR build * testing PR build * testing PR build * testing PR build * testing PR build * fixed release_json.sh script * fixed release_json.sh script * fixed release_json.sh script * testing PR build * testing PR build Co-authored-by: Bulat Yusupov <[email protected]> Co-authored-by: 66632 <>
1 parent efc35a9 commit e0290fc

File tree

2 files changed

+196
-0
lines changed

2 files changed

+196
-0
lines changed

Jenkinsfile

Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
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+
}

release_json.sh

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/bin/bash
2+
3+
last_tag=$(git describe --tags --abbrev=0)
4+
5+
if [ -z "$last_tag" ]; then
6+
last_tag="HEAD"
7+
else
8+
last_tag="$last_tag..HEAD"
9+
fi
10+
11+
commits_list=$(git --no-pager log $last_tag --oneline --pretty=format:"- %s\\n" | uniq | tr -d '\n' | sed 's/\"/\\"/g')
12+
13+
echo '{"tag_name":"'$1'","name":"'$1'","body":"'$commits_list'"}' > /tmp/release.json

0 commit comments

Comments
 (0)