DevOps案例 | 基于jfrog cli实现版本按目录传输
Posted 中兴开发者社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DevOps案例 | 基于jfrog cli实现版本按目录传输相关的知识,希望对你有一定的参考价值。
每天读一篇一线开发者原创好文
DevOps微课系列旨在帮助用户学习DevOps实践。
【概述】
本文为适配制品库整目录的转输场景,对比两款制品传输工具(curl和jfrog cli),选择基于jfrog cli实现公共脚本完成整目录的上传下载。并提供两个公共Api集成到ipipeline公共库,同时输出示例,供其它类似需求项目支持jenkins pipeline脚本调用。
【痛点描述】
项目版本发布去年迁移到制品库,版本打包为一个大压缩包,包含多个项目和组件,总大小超过20G。最初使用curl工具进行版本的上传下载,出现过如下问题:
1. 独立组件更新困难,如在版本最后发布时会更新LICENSE文件,需要整版本获取并更新;
2. 版本下载成功率低,特别在外网访问出现异常时,需要重下整版本;
3. 版本无完整性校验,CURL命令本身不提供如md5完整性校验,需要本地生成同名前缀的.md5文件上传。
【解决方案】
方案上考虑将版本按组件拆分出目录,按整目录上传下载。
为此,我们对比curl和jfrog cli专业客户端工具(没有考虑jenkins jfrog plugin主要原因是自动化部署有不依赖JENKINS场景):
其中,两点说明:
1. 下载网速理论上jfrog cli 支持并发多线程下载应当更快,但实现可能受限于网络带宽无法体现优势。
2. 使用frog cli上传自动生成同名.md5和.sha1后缀的文件,但由于版本过低不支持sha256文件名校验(需要至少jfrog 5.5版本,支持sha256服务端生成),效果如下,第二、三个文件为工具自动生成:
综上,选择 jfrog cli实施。
考查jfrog cli 工具命令较多,易用性不够好,同时考虑到各项目组件有上传下载整个目录的通用需求,所以实现统一shell脚本,主要逻辑如下:
脚本使用说明:
参数一:JFROG_USER
说明:JFROG账号,使用HR工号或者公共账号
参数二:JFROG_PASSWD
说明:JFROG密码,使用HR工号或者公共账号密码
参数三:LOAD_TYPE
说明:操作类型,upLoad|downLoad
参数四:SRC_VERSION_PATH
参数五:DST_VERSION_PATH
示例:
【Pipeline 集成】
步骤一:Jenkins公共库设置
在系统配置-> Global Pipeline Libraries中设置公共库参数,主要 指定如下红色标注:
步骤二:Jenkins Pipeline脚本 添加如下逻辑
【推广建议】
对于同样需要整个目录上传下载的项目,可以考虑复用本实践脚本;对于考虑jenins pipeline实践的项目,可以考虑直接调用API,实现项目版本整目录的上传下载。
以上是关于DevOps案例 | 基于jfrog cli实现版本按目录传输的主要内容,如果未能解决你的问题,请参考以下文章
JFrog助力Google Anthos混合云Devops实践,实现安全高质量的容器镜像管理
JFrog推出全球首个支持混合云架构,端到端的通用DevOps平台 ——JFrog Platform