@初探在容器上构建持续部署( 三 )
],
volumes: [
hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock')
]) {
node(POD_LABEL) {
def kubBackendDirectory = ''/script/kubernetes/backend''
stage('Checkout') {
container('modified-jenkins') {
sh 'echo get source from github'
git 'https://github.com/jfeng45/k8sdemo'
}
}
stage('Build image') {
def imageName = ''jfeng45/jenkins-k8sdemo:${env.BUILD_NUMBER}''
def dockerDirectory = ''${kubBackendDirectory}/docker/Dockerfile-k8sdemo-backend''
container('modified-jenkins') {
withCredentials([[$class: 'UsernamePasswordMultiBinding',
credentialsId: 'dockerhub',
usernameVariable: 'DOCKER_HUB_USER',
passwordVariable: 'DOCKER_HUB_PASSWORD']]) {
sh ''''''
docker login -u ${DOCKER_HUB_USER} -p ${DOCKER_HUB_PASSWORD}
docker build -f ${WORKSPACE}${dockerDirectory} -t ${imageName} .
docker push ${imageName}
''''''
}
}
}
stage('Deploy') {
container('modified-jenkins') {
sh ''kubectl apply -f ${WORKSPACE}${kubBackendDirectory}/backend-deployment.yaml''
sh ''kubectl apply -f ${WORKSPACE}${kubBackendDirectory}/backend-service.yaml''
}
}
}
}
我们逐段看一下代码:
设定容器镜像:
podTemplate(label: POD_LABEL, cloud: 'kubernetes', containers: [
containerTemplate(name: 'modified-jenkins', image: 'jfeng45/modified-jenkins:1.0', ttyEnabled: true, command: 'cat')
],
volumes: [
hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock')
])
这里设定Jenkins子节点Pod的容器镜像 , 用的是“jfeng45/modified-jenkins:1.0” , 也就是我们在上个步骤创建的 。 所有的脚本里的步骤(stage)都用的是这个镜像 。 “volumes:”用来挂载卷到Jenkins容器中 , 这样Jenkins子节点就可以使用虚机的Docker引擎 。
关于Jenkins脚本命令和设置挂载卷请参阅jenkinsci/kubernetes-plugin
https://github.com/jenkinsci/kubernetes-plugin
- 创建镜像:
WORKSPACE”是Jenkins预定义变量 , 从GitHub下载的源代码就存放在“{WORKSPACE}”里 。
stage('Build image') {
def imageName = ''jfeng45/jenkins-k8sdemo:${env.BUILD_NUMBER}''
def dockerDirectory = ''${kubBackendDirectory}/docker/Dockerfile-k8sdemo-backend''
container('modified-jenkins') {
withCredentials([[$class: 'UsernamePasswordMultiBinding',
credentialsId: 'dockerhub',
usernameVariable: 'DOCKER_HUB_USER',
passwordVariable: 'DOCKER_HUB_PASSWORD']]) {
sh ''''''
docker login -u ${DOCKER_HUB_USER} -p ${DOCKER_HUB_PASSWORD}
docker build -f ${WORKSPACE}${dockerDirectory} -t ${imageName} .
docker push ${imageName}
''''''
推荐阅读
- 【大连】大连化物所:通过纳米反应器的电催化效应构建高性能的锂硫电池
- []构建120Hz壁垒,全球最快充电,Find X2标准版表现均衡且全面
- 『甘肃』“绿”动甘肃加快构建清洁高效能源体系
- 砍柴网:华为云 Volcano 容器批量计算正式成为 CNCF 官方项目
- 计算:引领云原生|华为云Volcano容器批量计算正式成为CNCF官方项目
- 『karl』视觉设计软件公司「Lucid Software」获 5200 万美元融资,帮助用户构建工作图表
- 「海信」海信发布2020年4大系列电视新品 构建超画质和全场景娱乐体验
- 「」从0到100,用户画像的构建思路,值得学习参考!
- 「路由器」接上U盘就能构建虚拟局域网!蒲公英X5路由器使用体验分享
- 『IBM中国』全球CEO洞察:构建数据优势,这3大领域是关键!
