123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- def VERSION
- pipeline {
- options {
- disableConcurrentBuilds()
- }
- tools {
- maven 'mvn_3.6.3'
- }
- environment {
- registry = "provectuslabs/kafka-ui"
- 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
- resources:
- limits:
- memory: 512Mi
- cpu: "500m"
- 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 {
- stage('Checkout release branch') {
- when {
- expression { return env.GIT_BRANCH == 'master'; }
- }
- steps {
- sh 'git checkout -b release'
- }
- }
- stage('Merge to release branch') {
- when {
- expression { return env.GIT_BRANCH == 'master'; }
- }
- steps {
- sh 'git merge origin/master'
- }
- }
- stage('Remove SNAPSHOT from version') {
- when {
- expression { return env.GIT_BRANCH ==~ /.*master$/; }
- }
- 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 bash -c 'mvn versions:set -DremoveSnapshot'"
- }
- }
- }
- stage('Get version from pom.xml') {
- when {
- expression { return env.GIT_BRANCH == 'master'; }
- }
- steps {
- script {
- pom = readMavenPom file: 'pom.xml'
- VERSION = pom.version
- }
- }
- }
- stage('Build artifact') {
- when {
- anyOf {
- changeRequest ()
- expression { return env.GIT_BRANCH ==~ /.*master$/; }
- }
- }
- steps {
- container('docker-client') {
- sh "docker run -v /var/run/docker.sock:/var/run/docker.sock -v $WORKSPACE:/usr/src/mymaven -v /tmp/repository:/root/.m2/repository -w /usr/src/mymaven provectuslabs/openjdk:13 bash -c 'chown -R \$(whoami):\$(whoami) kafka-ui-react-app && ./mvnw clean package -Pprod'"
- }
- }
- }
- stage('Build docker image') {
- when {
- expression { return env.GIT_BRANCH ==~ /.*master$/; }
- }
- steps {
- container('docker-client') {
- dir(path: './kafka-ui-api') {
- script {
- dockerImage = docker.build( registry + ":$VERSION", "--build-arg JAR_FILE=kafka-ui-api-\'$VERSION\'.jar -f Dockerfile ." )
- }
- }
- }
- }
- }
- stage('Publish docker image') {
- when {
- expression { return env.GIT_BRANCH ==~ /.*master$/; }
- }
- steps {
- container('docker-client') {
- script {
- docker.withRegistry( '', registryCredential ) {
- dockerImage.push()
- dockerImage.push('latest')
- }
- }
- }
- }
- }
- stage('Remove unused docker image') {
- when {
- expression { return env.GIT_BRANCH ==~ /.*master$/; }
- }
- steps{
- container('docker-client') {
- sh "docker rmi $registry:$VERSION"
- }
- }
- }
- stage('Create github release with text from commits') {
- when {
- expression { return env.GIT_BRANCH ==~ /.*master$/; }
- }
- steps {
- script {
- withCredentials([usernamePassword(credentialsId: 'github-jenkins-internal-provectus', passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USER')]) {
- sh "bash -x release_json.sh v$VERSION"
- sh "git tag -f v$VERSION"
- sh "git push -f --tags https://$GIT_USER:$GIT_PASSWORD@github.com/provectus/kafka-ui.git"
- sh "curl -XPOST -u $GIT_USER:$GIT_PASSWORD --data @/tmp/release.json https://api.github.com/repos/provectus/kafka-ui/releases"
- }
- }
- }
- }
- stage('Checkout master') {
- when {
- expression { return env.GIT_BRANCH ==~ /.*master$/; }
- }
- steps {
- sh 'git checkout master'
- }
- }
- stage('Increase version in master') {
- when {
- expression { return env.GIT_BRANCH ==~ /.*master$/; }
- }
- 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 bash -c 'mvn build-helper:parse-version versions:set -DnewVersion=\\\${parsedVersion.majorVersion}.\\\${parsedVersion.minorVersion}.\\\${parsedVersion.nextIncrementalVersion}-SNAPSHOT versions:commit'"
- }
- }
- }
- stage('Push to master') {
- when {
- expression { return env.GIT_BRANCH ==~ /.*master$/; }
- }
- steps {
- script {
- withCredentials([usernamePassword(credentialsId: 'github-jenkins-internal-provectus', passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USER')]) {
- sh "git add ."
- sh "git -c user.name=\"$GIT_USER\" -c user.email=\"\" commit -m \"Increased version in pom.xml\""
- sh "git push https://$GIT_USER:$GIT_PASSWORD@github.com/provectus/kafka-ui.git HEAD:master"
- }
- }
- }
- }
- }
- post {
- always {
- cleanWs()
- }
- }
- }
|