diff --git a/Jenkinsfile b/Jenkinsfile index 51f3419..2ef1e1a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,38 +1,52 @@ -def gv +#!/usr/bin/env groovy pipeline { agent any + tools { + maven 'Maven' + } stages { - stage("init") { + stage('increment version') { steps { script { - gv = load "script.groovy" + 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 jar") { + stage('build app') { steps { script { - echo "building jar" - //gv.buildJar() + echo "building the application..." + sh 'mvn clean package' } } } - stage("build image") { + stage('build image') { steps { script { - echo "building image" - //gv.buildImage() + echo "building the docker image..." + withCredentials([usernamePassword(credentialsId: 'docker-hub-repo', 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") { + stage('deploy') { steps { script { - echo "deploying" - //gv.deployApp() + withKubeConfig([credentialsId: 'k8s-credentials', serverUrl: 'https://7293fae4-4c9d-4629-bc82-262d0a2b8e3c.eu-central-2.linodelke.net']) { + sh 'envsubst < kubernetes/deployment.yaml | kubectl apply -f -' + } } } } - } -} \ No newline at end of file + } +} diff --git a/kubernetes/deployment.yaml b/kubernetes/deployment.yaml new file mode 100644 index 0000000..203c3c2 --- /dev/null +++ b/kubernetes/deployment.yaml @@ -0,0 +1,22 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: java-maven-app + labels: + app: java-maven-app +spec: + replicas: 2 + selector: + matchLabels: + app: java-maven-app + template: + metadata: + labels: + app: java-maven-app + spec: + containers: + - name: java-maven-app + image: nanajanashia/demo-app:$IMAGE_NAME + ports: + - containerPort: 8080 + diff --git a/kubernetes/service.yaml b/kubernetes/service.yaml new file mode 100644 index 0000000..001ad3e --- /dev/null +++ b/kubernetes/service.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: java-maven-app +spec: + selector: + app: java-maven-app + ports: + - protocol: TCP + port: 80 + targetPort: 8080 diff --git a/target/java-maven-app-1.1.1.jar b/target/java-maven-app-1.1.1.jar new file mode 100644 index 0000000..bad81a3 Binary files /dev/null and b/target/java-maven-app-1.1.1.jar differ diff --git a/target/java-maven-app-1.1.1.jar.original b/target/java-maven-app-1.1.1.jar.original new file mode 100644 index 0000000..268d366 Binary files /dev/null and b/target/java-maven-app-1.1.1.jar.original differ