Created
June 5, 2018 05:48
-
-
Save mateothegreat/a87c0ab0c71a9c81a8bc58b1266543f9 to your computer and use it in GitHub Desktop.
Jenkins pipeline with k8/docker support
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pipeline { | |
agent any | |
options { | |
disableConcurrentBuilds() | |
buildDiscarder(logRotator(numToKeepStr: '1')) | |
} | |
parameters { | |
choice(name: 'ENVIRONMENT', choices: "Production", description: 'Select target environment') | |
booleanParam(defaultValue: true, name: 'PROVISION', description: 'Provision Kubernetes Infrastructure') | |
string(name: 'CLUSTER_NAME', defaultValue: 'your-cluster-na', description: 'GKE Cluster Name') | |
string(name: 'CLUSTER_ZONE', defaultValue: 'us-central1-a', description: 'GKE Cluster Zone') | |
string(name: 'PROJECT', defaultValue: 'asdfasdfasdf', description: 'Google Cloud Project Name') | |
string(name: 'REPOSITORY_NAME', defaultValue: 'asdfasdfasdf-v1', description: 'Google Cloud Repository Name') | |
} | |
environment { | |
IMAGE_TAG = "${env.GIT_COMMIT}" | |
} | |
stages { | |
stage('Notify Slack') { | |
steps { | |
slackSend (token: 'ek3r55KGGtmfs5edI1TdktG0', baseUrl: 'https://hooks.slack.com/services/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', channel: '#development', color: '#0000FF', message: "BUILD STARTED: For 'blitzalytics-v1', Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})") | |
} | |
} | |
stage('Setup gcloud cli') { | |
steps { | |
sh "gcloud container clusters get-credentials ${params.CLUSTER_NAME} --project=${params.PROJECT} --zone=${params.CLUSTER_ZONE}" | |
sh "echo Y | gcloud auth configure-docker" | |
} | |
} | |
stage('Checkout source code from gcloud') { | |
steps { | |
sh "gcloud source repos clone ${params.REPOSITORY_NAME} --project=${params.PROJECT}" | |
sh "ls -la" | |
sh "cd ${params.REPOSITORY_NAME}" | |
sh "ls -la" | |
} | |
} | |
stage('Build Docker Image') { | |
steps { | |
dir("${params.REPOSITORY_NAME}") { | |
echo "*** Building docker image with IMAGE_TAG: ${IMAGE_TAG}" | |
sh "pwd" | |
sh "ls -la" | |
sh "docker build -t gcr.io/${params.PROJECT}/${params.REPOSITORY_NAME}:${IMAGE_TAG} ." | |
sh "docker push gcr.io/${params.PROJECT}/${params.REPOSITORY_NAME}:${IMAGE_TAG}" | |
} | |
} | |
} | |
stage('Update Deployment(s)') { | |
steps { | |
sh "kubectl set image deployment/${params.REPOSITORY_NAME} *=gcr.io/${params.PROJECT}/${params.REPOSITORY_NAME}:${IMAGE_TAG}" | |
} | |
} | |
} | |
post { | |
always { | |
cleanWs() | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment