// Jenkinsfile.test
							 | 
						|
								// @version    180903:2
							 | 
						|
								// @author     zhangxuhong <zhangxuhong@xitu.io>
							 | 
						|
								//
							 | 
						|
								
							 | 
						|
								def repoName        = "gq-hello"
							 | 
						|
								def nginxRepoName   = "${repoName}-nginx"
							 | 
						|
								def label           = "worker-${UUID.randomUUID().toString()}"
							 | 
						|
								def registryHost    = "harbor02.juejin.id/test/"
							 | 
						|
								def deployLocation  = "test.kube01.lobj.juejin.id"
							 | 
						|
								
							 | 
						|
								podTemplate(
							 | 
						|
								    label: label, 
							 | 
						|
								    containers: [
							 | 
						|
								        containerTemplate(
							 | 
						|
								            name: 'git', 
							 | 
						|
								            image: 'harbor02.juejin.id/infrastructure/git-1.8.3.1-centos:0.0.3', 
							 | 
						|
								            command: 'cat', 
							 | 
						|
								            ttyEnabled: true
							 | 
						|
								        ),
							 | 
						|
								        containerTemplate(
							 | 
						|
								            name: 'dind', 
							 | 
						|
								            image: 'harbor02.juejin.id/infrastructure/docker-18.06.0-ce-dind:0.0.2', 
							 | 
						|
								            command: 'cat', 
							 | 
						|
								            ttyEnabled: true
							 | 
						|
								        ),
							 | 
						|
								        containerTemplate(
							 | 
						|
								            name: 'kubectl', 
							 | 
						|
								            image: 'harbor02.juejin.id/infrastructure/kubectl-1.11.1-centos-with-cert-cluster01.lobj:latest', 
							 | 
						|
								            command: 'cat', 
							 | 
						|
								            ttyEnabled: true
							 | 
						|
								        ),
							 | 
						|
								    ],
							 | 
						|
								    volumes: [
							 | 
						|
								        hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock'),
							 | 
						|
								    ],
							 | 
						|
								    cloud: deployLocation
							 | 
						|
								){
							 | 
						|
								    node(label) {
							 | 
						|
								        // start deploy phrase
							 | 
						|
								        stage("[1/4] check out"){
							 | 
						|
								            container('git'){
							 | 
						|
								                checkout scm
							 | 
						|
								                sh "git rev-parse --short HEAD > commit-id"
							 | 
						|
								                tag                  = readFile('commit-id').replace("\n", "").replace("\r", "")
							 | 
						|
								                imageName            = "${registryHost}${repoName}:${tag}"
							 | 
						|
								                nginxImageName       = "${registryHost}${nginxRepoName}:${tag}"
							 | 
						|
								                env.IMAGE_NAME       = imageName
							 | 
						|
								                env.NGINX_IMAGE_NAME = nginxImageName
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								        stage("[2/4] Build"){
							 | 
						|
								            container('dind'){
							 | 
						|
								                sh "docker version"
							 | 
						|
								                sh "docker build -f gq-hello.dockerfile -t ${imageName} ./"
							 | 
						|
								                sh "docker build -f gq-hello-nginx.dockerfile -t ${nginxImageName} ./"
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								        stage("[3/4] Push"){
							 | 
						|
								            container('dind'){
							 | 
						|
								                sh "/usr/local/bin/docker-login.sh"
							 | 
						|
								                sh "docker push ${imageName}"
							 | 
						|
								                sh "docker push ${nginxImageName}"
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								        stage("[4/4] Deploy"){
							 | 
						|
								            container('kubectl'){
							 | 
						|
								                // deploy nginx
							 | 
						|
								                sh "sed -i 's#__IMAGE__#$NGINX_IMAGE_NAME#g' ./config/kubernetes/gq-hello-nginx-deployment.yaml"
							 | 
						|
								                sh "cat ./config/kubernetes/gq-hello-nginx-deployment.yaml"
							 | 
						|
								                sh "kubectl --kubeconfig=/root/.kube/config apply -f ./config/kubernetes/gq-hello-nginx-service.yaml"
							 | 
						|
								                sh "kubectl --kubeconfig=/root/.kube/config apply -f ./config/kubernetes/gq-hello-nginx-ingress.yaml"
							 | 
						|
								                sh "kubectl --kubeconfig=/root/.kube/config apply -f ./config/kubernetes/gq-hello-nginx-deployment.yaml"
							 | 
						|
								                // deploy repo
							 | 
						|
								                sh "sed -i 's#__IMAGE__#$IMAGE_NAME#g' ./config/kubernetes/gq-hello-deployment.yaml"
							 | 
						|
								                sh "cat ./config/kubernetes/gq-hello-deployment.yaml"
							 | 
						|
								                sh "kubectl --kubeconfig=/root/.kube/config apply -f ./config/kubernetes/gq-hello-service.yaml"
							 | 
						|
								                sh "kubectl --kubeconfig=/root/.kube/config apply -f ./config/kubernetes/gq-hello-deployment.yaml"
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								}
							 |