在开发方面,由于我行开发语言种类较多,不同的语言需要不同的私服,不便于管理维护和安全扫描;在投产方面,SVN+FTP传递制品的方式已经无法满足上云的应用,在多种产品的选型中,我们选取了JFROG-Artifactory作为民生银行统一制品仓库,来管理、存储、分发全行级的制品。经过一年多的适配,制品仓库已经与我行DEVOPS平台(pset+eva)、工单流程平台、容器平台、CMDB等关键系统丝滑对接。我们建设的初衷是,规范民生银行制品投产流程,提高制品质量,加速制品投产效率。我们从SVN+FTP切换到制品仓库的理念是,把更多的工作做到DEVOPS平台上,尽可能对用户无感,减轻科技人员负担。
支持全开发语言依赖
全行级制品管理
适配行内系统
接下来建设计划

1
支持全开发语言依赖
1.1
由于开发语言种类多,各项目组根据情况搭建自己的私服。这样不便于依赖的管理和安全扫描。而且许多公网的依赖源,各个私服自己代理,这样会造成很多不易排查的问题。
以maven为例,部分项目组在自己私服上传了jar包而没有上传pom文件,私服默认根据gav创建了一个没有依赖的pom文件。这样各项目组在本地自己构建的时候没问题,如果在pset集中构建,有可能先构建的是错误的pom文件的项目,后续也有这个依赖的项目由于拉不到传递依赖就有可能会构建失败。
制品仓库对公网的主流仓库进行了代理,并且将公网仓库作为优先的依赖源,这样可以避免因为公网依赖导致的构建问题。
并且我们提供了一套用于上传的公共仓库,解决了公共依赖上传重复,维护混乱的问题。

1.2

1.3

1.4

2
全行级制品管理
2.1
文件分类分为5种类型,作用分别如下:
artifact 存储镜像、tar、jar、war等二进制文件
config 存储配置文件
sql 存储sql文件
yaml 存储yaml等部署文件
other 存储其他类型的文件
2.2
制品仓库支持对存储的文件添加元数据,现在已经把jira号作为元数据添加到投产文件上面,后续还要打测试相关的质量数据,来做质量门禁。

2.3
开源软件黑名单

3
适配行内系统
3.1
pset(软件工程支撑平台),负责软件需求到软件交付的全生命周期管理。制品仓库通过与pset集成,来实现对上层用户透明,用户只需要少量配置,即可从DTR、SVN、FTP切换到制品仓库,通过与pset协定,使用不同成熟度的仓库,并按照规范存放制品。
3.2
itoms(IT运维管理系统),负责数据中心所有变更流程。制品分发到生产环境必须与流程相关联。通过与itoms工单系统对接,实现了工单审批通过,同步传输制品到生产环境。
3.3
4
接下来建设计划
4.1
4.2
目前主要是总行的项目使用制品仓库存储构建介质和流转生产介质,后续总行以外的信用卡中心和分行也将使用总行的制品仓库进行投产。

4.3
(1) peer-to-peer:
在k8s集群的机器上面安装插件,插件会收集镜像的下载信息,当集群中的部分机器因为意外故障重启之后需要重新下载镜像的时候,优先从集群中的其他有该镜像的机器进行下载,从而有效减轻,当数据中心级灾难时,几千上万个容器节点同时从制品仓库下载镜像爆发式的压力。
(2) edge:
edge相当于是只有下载功能的Artifactory,由于edge成本低和不能修改的特性,可以让研发中心使用Artifactory,让总行、信用卡、分行等机构使用edge,edge承担一个分流的角色,通过研发中心Artifactory分发制品给各个数据中心edge,然后各个数据中心从本地的edge消费。





