在开发方面|JFrog助力民生银行打造企业级单一可信源

在开发方面 , 由于我行开发语言种类较多 , 不同的语言需要不同的私服 , 不便于管理维护和安全扫描;在投产方面 , SVN+FTP传递制品的方式已经无法满足上云的应用 , 在多种产品的选型中 , 我们选取了JFROG-Artifactory作为民生银行统一制品仓库 , 来管理、存储、分发全行级的制品 。 经过一年多的适配 , 制品仓库已经与我行DEVOPS平台(pset+eva)、工单流程平台、容器平台、CMDB等关键系统丝滑对接 。 我们建设的初衷是 , 规范民生银行制品投产流程 , 提高制品质量 , 加速制品投产效率 。 我们从SVN+FTP切换到制品仓库的理念是 , 把更多的工作做到DEVOPS平台上 , 尽可能对用户无感 , 减轻科技人员负担 。
民生银行制品仓库的应用
支持全开发语言依赖
全行级制品管理
适配行内系统
接下来建设计划
在开发方面|JFrog助力民生银行打造企业级单一可信源
文章图片
一、支持全开发语言依赖
1.1统一私服
由于开发语言种类多 , 各项目组根据情况搭建自己的私服 。 这样不便于依赖的管理和安全扫描 。 而且许多公网的依赖源 , 各个私服自己代理 , 这样会造成很多不易排查的问题 。
以maven为例 , 部分项目组在自己私服上传了jar包而没有上传pom文件 , 私服默认根据gav创建了一个没有依赖的pom文件 。 这样各项目组在本地自己构建的时候没问题 , 如果在pset集中构建 , 有可能先构建的是错误的pom文件的项目 , 后续也有这个依赖的项目由于拉不到传递依赖就有可能会构建失败 。
制品仓库对公网的主流仓库进行了代理 , 并且将公网仓库作为优先的依赖源 , 这样可以避免因为公网依赖导致的构建问题 。
并且我们提供了一套用于上传的公共仓库 , 解决了公共依赖上传重复 , 维护混乱的问题 。
在开发方面|JFrog助力民生银行打造企业级单一可信源
文章图片
1.2权限管理
各种私服大多数是对单个用户进行授权 , 权限关系不好维护 。
因为制品仓库在身份认证和准入管理方面有user , group和permission三种资源 , 我们在开发环境能够更加方便的从pset同步权限 。 我们编写代码并做成每日定时任务 , 从pset同步用户和权限 。 pset每个模块都有只读 , 编辑和管理员三种权限 , 在制品仓库中也根据模块创建三个group分配同步pset三种权限中的用户;然后为每个模块创建permission将对应的group和需要操作的仓库进行关联 , 这样就可以将pset对应模块对应权限的用户与制品仓库的访问权限绑定上 , 无需每个用户单独配置权限 。 用户与模块 , 模块与仓库的关系非常清晰 , 易于管理 。 生产环境从cmdb也采用相同的方式进行权限同步和维护 , 同时也实现了各个模块之间权限的隔离 。
在开发方面|JFrog助力民生银行打造企业级单一可信源
文章图片
1.3仓库管理
制品仓库分local仓库 , remote仓库和virtual仓库 。 由于local仓库的可以上传的特性 , 我们将其作为行内公共包和项目组私有包的上传仓库 。 对于项目组之前自己搭的私库中的文件 , 也可以使用插件将文件同步到自己的私库中 , 所以用户可以很方便的切换到制品仓库 。
remote仓库可以代理其他远端的仓库 , 我们用来代理之前行内的公共仓库和公网的一些公共仓库 。 如果用户发现自己依赖的公网包在现代理的公网仓库中没有的情况下 , 可以跟我们反馈 , 我们根据情况申请代理 , 代理对应的公网仓库 。
virtual仓库里面可以维护local , remote和virtual三种类型的仓库 。 以maven仓库为例 , 其实公共仓库 , 包括之前行内的公共仓库和代理公网的公共仓库有将近三十个仓库 , 我们将其整合成三个虚拟仓库作为公共仓库供用户使用 , 后续我们调整仓库或者新增仓库 , 对于用户都是不受影响的 , 这就解决了用户老是修改依赖仓库配置的问题 。 为用户创建的仓库有release和snapshot两个虚拟仓库 , release和snapshot两个local仓库 , 并在release虚拟仓库中添加了release的local仓库以及两个公共的release虚拟仓库 , 在snapshot虚拟仓库中添加了snapshot的local仓库和公共的snapshot虚拟仓库 。 用户在配置上传和下载仓库的时候只需要配置他们模块的两个虚拟仓库就可以满足上传需求 , 能够同时下载到自己项目的包和公共仓库的包 。