PHP容器化demo
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

82 lines
3.3 KiB

// 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"
}
}
}
}