Jenkins Pipeline项目实战
一、项目流程
- Jenkins从git拉取指定tag代码
- Jenkins构建代码、镜像以及推送镜像到镜像库
- Jenkins通过Publish Over SSH通知远程服务器拉取镜像、远程服务器通过镜像启动容器
二、实现流程
1、从代码仓中拉取Jenkinsfile文件
2、从git拉取指定tag代码
配置Git参数:
剩下的部分需要在Jenkinsfile中完成 。
3、构建代码、镜像以及推送镜像到镜像库
构建代码镜像中需要引入容器端口以及宿主机端口变量,这是在参数构建中进行设置:
剩下的部分则在Jenkinsfile文件中完成。
三、Jenkinsfile文件
pipeline { // jenkins集群中的任一节点 agent any // 存放所有任务集合 stages { stage("拉取Git代码") { steps { checkout([$class: 'GitSCM', branches: [[name: '${tag}']], extensions: [], userRemoteConfigs: [[credentialsId: '6600bebe-4eec-4529-ac44-ef8', url: 'http://172.16.52.8/shenjianping/web_test.git']]]) } } stage("制作自定义镜像并且发布到Harbor") { steps { sh '''docker build -t 172.16.52.10:80/repo/${JOB_NAME}:$tag . docker login -u shenjianping -p ****** 172.16.52.10:80 docker push 172.16.52.10:80/repo/${JOB_NAME}:$tag''' } } stage("通知远程服务器拉取镜像,进行部署") { steps { sshPublisher(publishers: [sshPublisherDesc(configName: 'server02', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''cd /usr/local/test chmod a+x deploy.sh ./deploy.sh 172.16.52.10:80 repo ${JOB_NAME} $tag $host_port $container_port''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'deploy.sh')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)]) } } } }
在Jenkinsfile文件中有的固定值,如 172.16.52.10:80 镜像仓库等可以使用environment声明成全局变量然后通过${variableName}方式进行引用。
作者:iveBoy
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2019-09-19 Django之template操作