added svcapi ui and camunda code
[it/otf.git] / otf-frontend / Jenkinsfile
1 #!/usr/bin/env groovy\r
2 \r
3 properties([[$class: 'ParametersDefinitionProperty', parameterDefinitions: [\r
4 [$class: 'hudson.model.StringParameterDefinition', name: 'PHASE', defaultValue: "BUILD"],\r
5 [$class: 'hudson.model.StringParameterDefinition', name: 'ENV', defaultValue: "dev"],\r
6 [$class: 'hudson.model.StringParameterDefinition', name: 'MECHID', defaultValue: "username"],\r
7 [$class: 'hudson.model.StringParameterDefinition', name: 'KUBE_CONFIG', defaultValue: "kubeConfig-dev"],\r
8 [$class: 'hudson.model.StringParameterDefinition', name: 'OTF_MONGO_DB', defaultValue: "otf_mongo_dev_db"],\r
9 [$class: 'hudson.model.StringParameterDefinition', name: 'OTF_CAMUNDA_DB', defaultValue: "otf_camunda_dev_db"],\r
10 [$class: 'hudson.model.StringParameterDefinition', name: 'TILLER_NAMESPACE', defaultValue: ""]\r
11 ]]])\r
12 \r
13 echo "Build branch: ${env.BRANCH_NAME}"\r
14 \r
15 node("docker"){\r
16         stage 'Checkout'\r
17         checkout scm\r
18         PHASES=PHASE.tokenize( '_' );\r
19         echo "PHASES : " + PHASES\r
20 \r
21 \r
22         ARTIFACT_ID="otf-frontend";\r
23         VERSION="Camille.1.0.3";\r
24         //TODO: deal with namespace and docker registry\r
25         NAMESPACE=""\r
26         DOCKER_REGISTRY=""\r
27 \r
28         if( ENV.equalsIgnoreCase("dev") ){\r
29                 IMAGE_NAME=DOCKER_REGISTRY + "/" + NAMESPACE + "/" + ARTIFACT_ID +  ":" + VERSION\r
30         }\r
31         if( ENV.equalsIgnoreCase("prod") || ENV.equalsIgnoreCase("prod-dr")){\r
32                 IMAGE_NAME=DOCKER_REGISTRY + "/" + NAMESPACE + ".prod" + "/" + ARTIFACT_ID +  ":" + VERSION\r
33         }\r
34         if( ENV.equalsIgnoreCase("st") ){\r
35                 IMAGE_NAME=DOCKER_REGISTRY + "/" + NAMESPACE + ".st" + "/" + ARTIFACT_ID +  ":" + VERSION\r
36         }\r
37         echo "Artifact: " + IMAGE_NAME\r
38 \r
39         withEnv(["PATH=${env.PATH}:${env.WORKSPACE}/linux-amd64", "HELM_HOME=${env.WORKSPACE}"]) {\r
40 \r
41                 echo "PATH=${env.PATH}"\r
42                 echo "HELM_HOME=${env.HELM_HOME}"\r
43 \r
44                 withCredentials([usernamePassword(credentialsId: MECHID, usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {\r
45 \r
46                         // sh """\r
47                         //      docker login $DOCKER_REGISTRY --username $USERNAME --password $PASSWORD\r
48                         // """\r
49 \r
50                         if (PHASES.contains("BUILD")){\r
51                                 stage 'Publish Artifact'\r
52 \r
53 \r
54                                         echo "Artifact: " + IMAGE_NAME\r
55 \r
56                                         sh """\r
57                                                 docker login $DOCKER_REGISTRY --username $USERNAME --password $PASSWORD\r
58                                                 docker build --no-cache -t $IMAGE_NAME .\r
59                                                 docker push $IMAGE_NAME\r
60                                         """\r
61 \r
62 \r
63                         }\r
64                 }\r
65 \r
66                 if (PHASES.contains("DEPLOY") || PHASES.contains("UNDEPLOY")) {\r
67 \r
68                         stage 'Init Helm'\r
69 \r
70                         //check if helm exists if not install\r
71                         if(fileExists('linux-amd64/helm')){\r
72                                 sh """\r
73                                         echo "helm is already installed"\r
74                                 """\r
75                         }\r
76                         else{\r
77                         //download helm\r
78                                 sh """\r
79                                         echo "installing helm"\r
80                                         wget  https://storage.googleapis.com/kubernetes-helm/helm-v2.8.2-linux-amd64.tar.gz\r
81                                         tar -xf helm-v2.8.2-linux-amd64.tar.gz\r
82                                         rm helm-v2.8.2-linux-amd64.tar.gz\r
83                                 """\r
84                         }\r
85 \r
86                         withCredentials([file(credentialsId: KUBE_CONFIG,  variable: 'KUBECONFIG')]) {\r
87 \r
88                                 dir('helm'){\r
89                                 //check if charts are valid, and then perform dry run, if successful then upgrade/install charts\r
90 \r
91                                         if (PHASES.contains("UNDEPLOY") ) {\r
92                                                 stage 'Undeploy'\r
93 \r
94                                                 sh """\r
95                                                         helm delete --tiller-namespace=$TILLER_NAMESPACE --purge $ARTIFACT_ID\r
96                                                 """\r
97                                         }\r
98 \r
99                                 //NOTE Double quotes are used below to access groovy variables like artifact_id and tiller_namespace\r
100                         if (PHASES.contains("DEPLOY") ){\r
101                                 stage 'Deploy'\r
102                                                         withCredentials([\r
103                                                                 usernamePassword(credentialsId: OTF_MONGO_DB, usernameVariable: 'USERNAME_MONGO', passwordVariable: 'PASSWORD_MONGO'),\r
104                                                                 usernamePassword(credentialsId: 'FEATHERS_AUTH', usernameVariable: 'USER', passwordVariable: 'AUTHENTICATION_SECRET')\r
105                                                                 ]) {\r
106 \r
107                                                                 sh """\r
108                                                                         echo "Validate Yaml"\r
109                                                                         helm lint $ARTIFACT_ID\r
110 \r
111                                                                         echo "View Helm Templates"\r
112                                                                         helm template $ARTIFACT_ID \\r
113                                                                                 --set appName=$ARTIFACT_ID \\r
114                                                                                 --set version=$VERSION \\r
115                                                                                 --set image=$IMAGE_NAME \\r
116                                                                                 --set namespace=$TILLER_NAMESPACE \\r
117                                                                           --set env=$ENV \\r
118                                                                                 --set AUTHENTICATION_SECRET=$AUTHENTICATION_SECRET \\r
119                                                                                 --set mongo.username=$USERNAME_MONGO \\r
120                                                                                 --set mongo.password=$PASSWORD_MONGO\r
121 \r
122                                                                         echo "Perform Dry Run Of Install"\r
123                                                                         helm upgrade --tiller-namespace=$TILLER_NAMESPACE --install --dry-run $ARTIFACT_ID $ARTIFACT_ID \\r
124                                                                                 --set appName=$ARTIFACT_ID \\r
125                                                                                 --set version=$VERSION \\r
126                                                                                 --set image=$IMAGE_NAME \\r
127                                                                                 --set namespace=$TILLER_NAMESPACE \\r
128                                                                           --set env=$ENV \\r
129                                                                                 --set AUTHENTICATION_SECRET=$AUTHENTICATION_SECRET \\r
130                                                                                 --set mongo.username=$USERNAME_MONGO \\r
131                                                                                 --set mongo.password=$PASSWORD_MONGO\r
132 \r
133                                                                         echo "Helm Install/Upgrade"\r
134                                                                 helm upgrade --tiller-namespace=$TILLER_NAMESPACE --install --timeout 1000 $ARTIFACT_ID $ARTIFACT_ID \\r
135                                                                                 --set appName=$ARTIFACT_ID \\r
136                                                                                 --set version=$VERSION \\r
137                                                                                 --set image=$IMAGE_NAME \\r
138                                                                                 --set namespace=$TILLER_NAMESPACE \\r
139                                                                                 --set env=$ENV \\r
140                                                                                 --set AUTHENTICATION_SECRET=$AUTHENTICATION_SECRET \\r
141                                                                                 --set mongo.username=$USERNAME_MONGO \\r
142                                                                                 --set mongo.password=$PASSWORD_MONGO\r
143 \r
144                                                                 """\r
145                                                         }\r
146                         }\r
147 \r
148                                 }\r
149                         }\r
150         }\r
151 \r
152         }\r
153 }\r