Jenkinsfile 5.0 KB

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