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场景):

DevOps案例 | 基于jfrog cli实现版本按目录传输

其中,两点说明:

1. 下载网速理论上jfrog cli 支持并发多线程下载应当更快,但实现可能受限于网络带宽无法体现优势。

2. 使用frog cli上传自动生成同名.md5和.sha1后缀的文件,但由于版本过低不支持sha256文件名校验(需要至少jfrog 5.5版本,支持sha256服务端生成),效果如下,第二、三个文件为工具自动生成:

DevOps案例 | 基于jfrog cli实现版本按目录传输

综上,选择 jfrog cli实施。

考查jfrog  cli 工具命令较多,易用性不够好,同时考虑到各项目组件有上传下载整个目录的通用需求,所以实现统一shell脚本,主要逻辑如下:

DevOps案例 | 基于jfrog cli实现版本按目录传输

脚本使用说明:

参数一:JFROG_USER       

说明:JFROG账号,使用HR工号或者公共账号

参数二:JFROG_PASSWD    

说明:JFROG密码,使用HR工号或者公共账号密码

参数三:LOAD_TYPE     

说明:操作类型,upLoad|downLoad

参数四:SRC_VERSION_PATH 

参数五:DST_VERSION_PATH 

示例:

DevOps案例 | 基于jfrog cli实现版本按目录传输

Pipeline 集成】

步骤一:Jenkins公共库设置

在系统配置-> Global Pipeline Libraries中设置公共库参数,主要 指定如下红色标注:

DevOps案例 | 基于jfrog cli实现版本按目录传输

步骤二:Jenkins Pipeline脚本 添加如下逻辑

【推广建议】

对于同样需要整个目录上传下载的项目,可以考虑复用本实践脚本;对于考虑jenins pipeline实践的项目,可以考虑直接调用API,实现项目版本整目录的上传下载。

以上是关于DevOps案例 | 基于jfrog cli实现版本按目录传输的主要内容,如果未能解决你的问题,请参考以下文章

JFrog助力Google Anthos混合云Devops实践,实现安全高质量的容器镜像管理

JFrog推出全球首个支持混合云架构,端到端的通用DevOps平台 ——JFrog Platform

NetflixOracleING思科JFrog都如何做DevOps的?

安装并配置Jfrog-Artifactory

数字化创新应用发布加速,JFrog DevOps 正当时

Jfrog 神器cli