#!/usr/bin/env groovy pipeline { agent any tools { maven 'Maven' } stages { stage('increment version') { steps { script { echo 'incrementing app version...' sh 'mvn build-helper:parse-version versions:set \ -DnewVersion=\\\${parsedVersion.majorVersion}.\\\${parsedVersion.minorVersion}.\\\${parsedVersion.nextIncrementalVersion} \ versions:commit' def matcher = readFile('pom.xml') =~ '(.+)' def version = matcher[0][1] env.IMAGE_NAME = "$version-$BUILD_NUMBER" } } } stage('build app') { steps { script { echo "building the application..." sh 'mvn clean package' } } } stage('build image') { steps { script { echo "building the docker image..." withCredentials([usernamePassword(credentialsId: 'docker-hub', passwordVariable: 'PASS', usernameVariable: 'USER')]) { sh "docker build -t nanajanashia/demo-app:${IMAGE_NAME} ." sh "echo $PASS | docker login -u $USER --password-stdin" sh "docker push nanajanashia/demo-app:${IMAGE_NAME}" } } } } stage('deploy') { steps { script { withKubeConfig([credentialsId: 'k8s-credentials', serverUrl: 'https://7293fae4-4c9d-4629-bc82-262d0a2b8e3c.eu-central-2.linodelke.net']) { withCredentials([usernamePassword(credentialsId: 'docker-hub', passwordVariable: 'PASS', usernameVariable: 'USER')]) { sh "kubectl create secret docker-registry my-registry-key --docker-server=docker.io --docker-username=$USER --docker-password=$PASS" } sh 'envsubst < kubernetes/deployment.yaml | kubectl apply -f -' } } } } } }