From 3c28da67aca003a86f443cb1744be0a536fab4c7 Mon Sep 17 00:00:00 2001 From: bruckwubete Date: Mon, 20 Aug 2018 17:20:27 -0400 Subject: [PATCH] Squashed to 1 --- Jenkinsfile | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 00000000..9d4c6f50 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,60 @@ +def project = 'ci-cd-for-bn' +def appName = 'greenlight' +def greenlightVersion = 'v2' +def label = "jenkins-execution-worker-${UUID.randomUUID().toString()}" + +if (env.TAG_NAME && env.TAG_NAME.contains("release")) { + kubeCloud = "production" + kubecSecretsId = 'gl-launcher-prod-secrets' +} else { + kubeCloud = "staging" + kubecSecretsId = 'gl-launcher-staging-secrets' +} + +podTemplate(label: label, cloud: "${kubeCloud}", containers: [ + containerTemplate(name: 'gcloud', image: "gcr.io/ci-cd-for-bn/gcloud-docker", command: 'cat', ttyEnabled: true), + containerTemplate(name: 'kubectl', image: 'gcr.io/cloud-builders/kubectl', command: 'cat', ttyEnabled: true) +], +volumes: [ + hostPathVolume(mountPath: '/usr/bin/docker', hostPath: '/usr/bin/docker'), + hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock') +]){ + node(label) { + def myRepo = checkout scm + def gitCommit = myRepo.GIT_COMMIT + def gitBranch = myRepo.GIT_BRANCH + def gitTag = env.TAG_NAME + def shortGitCommit = "${gitCommit[0..10]}" + def previousGitCommit = sh(script: "git rev-parse ${gitCommit}~", returnStdout: true) + def imageTag = "gcr.io/${project}/${appName}:${gitBranch}.${env.BUILD_NUMBER}.${gitCommit}" + + stage('Build and Publish') { + container('gcloud') { + withCredentials([file(credentialsId: 'cloud-datastore-user-account-creds', variable: 'FILE')]) { + sh "gcloud auth activate-service-account --key-file=$FILE" + if (kubeCloud == "staging") { + sh "gcloud docker -- build -t ${imageTag} . && gcloud docker -- push ${imageTag}" + } else { + imageTag = "gcr.io/${project}/${appName}:${gitTag}" + withCredentials([string(credentialsId: 'DOCKER_USER', variable: 'DOCKER_USER'), string(credentialsId: 'DOCKER_PASSWORD', variable: 'DOCKER_PASSWORD')]) { + sh "gcloud docker -- build -t ${imageTag} -t '$DOCKER_USER/${appName}:${greenlightVersion}' -t '$DOCKER_USER/${appName}:${gitTag}' . && gcloud docker -- push ${imageTag}" + sh "docker login -u $DOCKER_USER -p $DOCKER_PASSWORD" + sh "docker push '$DOCKER_USER/${appName}:${greenlightVersion}' && docker push '$DOCKER_USER/${appName}:${gitTag}'" + } + } + } + } + } + + stage('Deploy') { + container('kubectl') { + withCredentials([file(credentialsId: kubecSecretsId, variable: 'FILE')]) { + sh ''' + kubectl get pods && kubectl apply -f $FILE + ''' + } + sh "kubectl set image deployments/gl-deployment gl=${imageTag}" + } + } + } +}