当前位置: 首页 > news >正文

DevOps 生态介绍(十一):从代码提交到镜像仓库的完整流水线(附Jenkinsfile

文章简介此篇文章介绍了将docker 集成到Jenkins pipeline 中,具体流程如下: checkout_get_code ---> Build_jar --->tar_package--->持续部署--->build_and_push_image--->jacoco 文章最后会附上完整Jenkinsfile

Jenkins服务器配置 Docker 安装Docker安装步骤请参照“DevOps 生态介绍(八):docker &dockerfile 命令介绍及构建项目的第一个镜像” 里面的步骤安装即可 Jenkins 登录acr 在Jenkins pipeline 过程中要将build image 推到镜像仓库,Jenkins 需要先登录ACR,Jenkins 登录ACR步骤请参考“DevOps 生态介绍(九):别再只用 Docker Hub 了!生产环境必知的 ACR 与 ECR 选型攻略” 这篇文章的ACR使用说明一栏即可Jenkins pipeline 下面是完整的Jenkinsfile 文件pipeline { agent any tools { maven 'Maven' } parameters { gitParameter( name: 'BRANCH', type: 'PT_BRANCH', defaultValue: 'master', branchFilter: 'origin/(.*)', sortMode: 'DESCENDING_SMART', selectedValue: 'DEFAULT', description: '请选择要构建的分支' ) booleanParam( name: 'SKIP_TEST', defaultValue: true, description: '是否跳过单元测试' ) choice( name: 'JDK_VERSION', choices: ['JDK17','JDK21'], description: '请选择JDK版本' ) } environment { JAVA_HOME = tool "${params.JDK_VERSION}" PATH = "${env.JAVA_HOME}/bin:${env.PATH}" } stages { stage('checkout_get_code') { steps { checkout([ $class: 'GitSCM', branches: [[name: "*/${params.BRANCH}"]], userRemoteConfigs: [[ credentialsId: 'f245a11f-afe0-4ca4-aa2d-1e574724677d', url: 'https://codeup.aliyun.com/60b83b0db8301d20d58b8017/test.git' ]] ]) } } stage('Build_jar') { steps { sh """ echo "build jar" java -version echo $JAVA_HOME mvn clean package \ -DskipTests=${params.SKIP_TEST} """ } } stage('tar_package') { steps { sh """ echo "tar package 开始..." cd target tar -zcvf test.tar.gz \ ms-pats-mq-util-1.2.0-SNAPSHOT.jar """ } } stage('CD') { steps { sshPublisher( publishers: [ sshPublisherDesc( configName: '192.168.1.170', transfers: [ sshTransfer( cleanRemote: false, excludes: '', execCommand: ''' #!/bin/bash source /etc/profile cd /data/app/mq_util ./server.sh stop tar zxvf test.tar.gz sleep 2 rm -rf test.tar.gz BUILD_ID=dontKillMe ./server.sh start sleep 2 ''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/data/app/mq_util', remoteDirectorySDF: false, removePrefix: 'target/', sourceFiles: 'target/test.tar.gz' ) ], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false ) ] ) } } stage('build_and_push_images ') { steps { sh ''' DATE=`date '+%Y%m%d'` docker build -t project_server . docker tag project_server:latest registry.cn-shanghai.aliyuncs.com/project_name/project_server:$DATE docker push registry.cn-shanghai.aliyuncs.com/project_name/project_server:$DATE docker rmi registry.cn-shanghai.aliyuncs.com/project_name/project_server:$DATE docker rmi project_server:latest echo "docker build success" ''' } } stage('jacoco') { steps { jacoco() } } }}

备注: 1:Jenkinsfile 文件中stage('build_and_push_images ') 的sh 这里我用的是单引号''' ''' 2:build image 需要用到Dockerfile 文件,需要将Dockerfile文件放到项目的根目录下,跟pom.xml 在同一目录下 3:dockerfile 文件的编写格式请参照“DevOps 生态介绍(八):docker &dockerfile 命令介绍及构建项目的第一个镜像” 4:我这里的项目单独建了一个pipeline的分支,专门是存放Jenkinsfile文件的,这样便于管理,只需要修改这个分支下的Jenkinsfile文件即可,不需要修改所有分支下的Jenkinsfile。 上面完整的Jenkinsfile文件是能够正常跑通

http://www.jsqmd.com/news/1084794/

相关文章:

  • 缠论量化工程化突破:从理论到智能交易系统的技术重构
  • 企业级 ERP 选型技术指南:国内外主流厂商产品体系深度盘点
  • 3分钟掌握微信语音转换:silk-v3-decoder让amr/slk音频转MP3如此简单
  • 如何掌握赛博朋克2077存档编辑器:免费终极修改工具完全指南
  • 3分钟掌握smcFanControl:免费解决Mac过热降频问题的终极方案
  • 安卓虚拟相机终极指南:5分钟掌握摄像头内容替换技术
  • 寻找文明的筑网者:贾子理论大厦(KTS)全球城市合伙人招商发布会
  • BetterNCM插件管理器完全指南:3分钟打造个性化网易云音乐
  • 如何3分钟为Word添加APA第7版格式:学术写作的终极效率工具
  • 从零到一:掌握JDK keytool证书全生命周期管理(生成、查看、导入、导出、删除)
  • Excel深度学习实战指南:从零开始构建AI模型
  • Obsidian PDF++:深度解析沉浸式PDF阅读的架构艺术
  • 企业级应用文件读取漏洞剖析:从路径遍历到安全防护
  • 3步搞定Windows启动盘:WinDiskWriter让Mac用户告别繁琐操作
  • iOS真机自动化测试:WebDriverAgent部署与设备ID精准寻址实战
  • 为什么你的Spring Boot在IDEA能编译却无法启动?揭秘IntelliJ IDEA 2023.3+与Spring Boot 3.2.x的ClassLoader隔离机制(附patch级兼容方案)
  • BSManager:一站式Beat Saber版本管理与模组配置完全指南
  • WorkshopDL终极指南:免费下载1000+款Steam创意工坊模组的完整教程
  • 告别Beyond Compare试用限制:3分钟获取永久授权的终极指南
  • 5分钟快速上手:WorkshopDL让你免费下载Steam创意工坊模组
  • ESP-Drone:基于ESP32的开源无人机固件深度解析与实践指南
  • 3步破解苹果旧设备限制:OpenCore Legacy Patcher技术深度解析
  • 3大架构革新!res-downloader视频解密工具深度解析:从资源嗅探到加密破解的全链路解决方案
  • so-vits-svc终极实战指南:掌握人声混合与扩散模型调优的完整方案
  • 如何快速批量重命名阿里云盘文件:aliyundrive-batch-rename的5个实用技巧
  • Obsidian PDF++ 插件:原生PDF工具栏自动隐藏功能的深度技术实现
  • 2026降AI率工具红黑榜:降AIGC工具怎么选?实测才敢推!
  • HiveWE:魔兽争霸III现代化地图编辑器完全指南:从入门到精通
  • 如何快速上手SMU Debug Tool:AMD Ryzen处理器底层调试完整实战教程
  • PRISM论文精读