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.
 
 

71 lines
2.4 KiB

// Jenkinsfile.prod
// @version 180820:1
// @author zhangxuhong <zhangxuhong@xitu.io>
//
def appName = "suid-generator"
def label = "worker-${UUID.randomUUID().toString()}"
def registryHost = "harbor02.juejin.id/prod/"
def deployLocation = "prod.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}${appName}:${tag}"
env.BUILDIMG=imageName
}
}
stage("[2/4] Build"){
container('dind'){
sh "docker version"
sh "docker build -t ${imageName} ./"
}
}
stage("[3/4] Push"){
container('dind'){
sh "/usr/local/bin/docker-login.sh"
sh "docker push ${imageName}"
}
}
stage("[4/4] Deploy"){
container('kubectl'){
sh "sed -i 's#__IMAGE__#$BUILDIMG#g' ./config/kubernetes/Deployment.yaml"
sh "cat ./config/kubernetes/Deployment.yaml"
sh "kubectl --kubeconfig=/root/.kube/config apply -f ./config/kubernetes/Service.yaml"
sh "kubectl --kubeconfig=/root/.kube/config apply -f ./config/kubernetes/Ingress.yaml"
sh "kubectl --kubeconfig=/root/.kube/config apply -f ./config/kubernetes/Deployment.yaml"
}
}
}
}