点击上方“中兴开发者社区”,关注我们

每天读一篇一线开发者原创好文

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 

说明:源地址路径,upLoad类型是指本地路径,downLoad类型时指制品库路径

参数五:DST_VERSION_PATH 

说明:目的地址路径,upLoad类型是指制品库路径,downLoad类型时指本地路径

示例:

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

Pipeline 集成】

步骤一:Jenkins公共库设置

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

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

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

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

【推广建议】

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

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

相关文章:

  • 2021-12-08
  • 2021-07-13
  • 2022-12-23
  • 2022-03-07
  • 2021-11-19
  • 2022-12-23
  • 2021-08-13
  • 2022-12-23
猜你喜欢
  • 2021-08-30
  • 2021-09-02
  • 2022-12-23
  • 2022-12-23
  • 2021-12-17
  • 2021-05-29
  • 2021-09-21
相关资源
相似解决方案