From 09d064eaea43f5de8ef0517f5d44bd5143beadf8 Mon Sep 17 00:00:00 2001
From: Pavol Mederly <mederly@evolveum.com>
Date: Wed, 19 Sep 2018 16:01:33 +0200
Subject: [PATCH] Add first version of Jenkinsfile

---
 Jenkinsfile                | 97 ++++++++++++++++++++++++++++++++++++++
 common.bash                |  2 +
 midpoint/download-midpoint |  5 +-
 3 files changed, 102 insertions(+), 2 deletions(-)
 create mode 100644 Jenkinsfile
 create mode 100644 common.bash

diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..adcf109
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,97 @@
+pipeline {
+    agent any
+    environment { 
+        maintainer = "t"
+        imagename = 'm'
+        tag = 'l'
+    }
+    stages {
+        stage('Setting build context') {
+            steps {
+                script {
+                    maintainer = maintain()
+                    imagename = imagename()
+                    if(env.BRANCH_NAME == "master") {
+                       tag = "latest"
+                    } else {
+                       tag = env.BRANCH_NAME
+                    }
+                    if(!imagename){
+                        echo "You must define an imagename in common.bash"
+                        currentBuild.result = 'FAILURE'
+                     }
+                    sh 'mkdir -p bin'
+                    sh 'mkdir -p tmp'
+                    dir('tmp'){
+                      git([ url: "https://github.internet2.edu/docker/util.git", credentialsId: "jenkins-github-access-token" ])
+                      sh 'ls'
+                      sh 'mv bin/* ../bin/.'
+                    }
+                }  
+             }
+        }    
+        stage('Clean') {
+            steps {
+                script {
+                   try{
+                     sh 'bin/destroy.sh >> debug'
+                   } catch(error) {
+                     def error_details = readFile('./debug');
+                     def message = "BUILD ERROR: There was a problem building the Base Image. \n\n ${error_details}"
+                     sh "rm -f ./debug"
+                     handleError(message)
+                   }
+                }
+            }
+        } 
+        stage('Build') {
+            steps {
+                script {
+                   sh 'midpoint/download-midpoint'
+                   docker.withRegistry('https://registry.hub.docker.com/',   "dockerhub-$maintainer") {
+                      def baseImg = docker.build("$maintainer/$imagename", "--no-cache midpoint/midpoint-server")
+                      // test the environment 
+                      // sh 'cd test-compose && ./compose.sh'
+                      // bring down after testing
+                      // sh 'cd test-compose && docker-compose down'
+                      baseImg.push("$tag")
+                   }
+               }
+            }
+        }
+        stage('Notify') {
+            steps {
+                echo "$maintainer"
+                //slackSend color: 'good', message: "$maintainer/$imagename:$tag pushed to DockerHub"
+            }
+        }
+    }
+    post { 
+        always { 
+            echo 'Done Building.'
+        }
+        failure {
+            // slackSend color: 'good', message: "Build failed"
+            handleError("BUILD ERROR: There was a problem building ${maintainer}/${imagename}:${tag}.")
+        }
+    }
+}
+
+
+def maintain() {
+  def matcher = readFile('common.bash') =~ 'maintainer="(.+)"'
+  matcher ? matcher[0][1] : 'tier'
+}
+
+def imagename() {
+  def matcher = readFile('common.bash') =~ 'imagename="(.+)"'
+  matcher ? matcher[0][1] : null
+}
+
+def handleError(String message){
+  echo "${message}"
+  currentBuild.setResult("FAILED")
+  //slackSend color: 'danger', message: "${message}"
+  //step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: 'chubing@internet2.edu', sendToIndividuals: true])
+  sh 'exit 1'
+}
diff --git a/common.bash b/common.bash
new file mode 100644
index 0000000..45039e1
--- /dev/null
+++ b/common.bash
@@ -0,0 +1,2 @@
+maintainer="tier"
+imagename="midpoint"
diff --git a/midpoint/download-midpoint b/midpoint/download-midpoint
index d1b5c06..50a2b2a 100755
--- a/midpoint/download-midpoint
+++ b/midpoint/download-midpoint
@@ -1,11 +1,12 @@
 #!/bin/bash
 
+dir=`dirname "$0"`
 echo "Downloading midPoint 3.9-SNAPSHOT"
 echo "-----------------------------------------"
-curl --output midpoint-server/midpoint-3.9-SNAPSHOT-dist.tar.gz "https://evolveum.com/downloads/midpoint-tier/midpoint-3.9-SNAPSHOT-dist.tar.gz"
+curl --output $dir/midpoint-server/midpoint-3.9-SNAPSHOT-dist.tar.gz "https://evolveum.com/downloads/midpoint-tier/midpoint-3.9-SNAPSHOT-dist.tar.gz"
 echo "-----------------------------------------"
 echo "Checking the download..."
-if tar -tf midpoint-server/midpoint-3.9-SNAPSHOT-dist.tar.gz >/dev/null; then
+if tar -tf $dir/midpoint-server/midpoint-3.9-SNAPSHOT-dist.tar.gz >/dev/null; then
   echo "OK"
 else
   echo "The file was not downloaded correctly"