天天看点

CA 搭建统一交付平台,实现快速发布

CA Technologies 介绍

CA 搭建统一交付平台,实现快速发布

CA 是全球领先的软件生命周期管理工具提供商:

● 全球10多个研发中心。

● 业务:基础设施管理,应用程序生命周期管理,安全,DevOps。

● 业务线复杂,需要搭建统一的快速发布平台支持所有的业务产品线。

CA 经过一系列的技术演进,已经实现了高效的自动化发布平台,支持 CA 内部所有产品线的研发,测试和发布,CA 是如何做到的?

CA 搭建统一交付平台,实现快速发布

CA 快速发布平台的目标非常明确,是将之前发布产品的周期从数月,减少到数天或者数小时,并且保证高质量的发布产品。

 CA 软件发布流程中的痛点

● 不同产品线使用不一致的工具链。

● 自研件存储在 SCM。

● 构建耦合度高 – 构建时间达到16小时。

● 18-24个月的发布周期。

● 缺少自动化测试 – 软件发布需要2300的人工测试

● 缺少”完成”的定义。

● 没有代码扫描工具。

CA 构建快速发布平台的过程

1. 使用统一的快速发布工具栈

CA 搭建统一交付平台,实现快速发布

● 使用 Github,因为它具备社交编程的能力,支持离线提交,并且对于新毕业的程序猿,接受度非常高。

● 在 CI 服务器选择上,60%使用 TeamCity, 剩下的大部分使用 Jenkins。

● SonarCube – 使用 Sonar 进行静态代码扫描,能够检查代码库里是否有 copy-paste 的代码,如果有的话,需要进行重构。

● BlackDuck – 进行第三方代码扫描。能够检查是否存在从第三方代码 copy-paste 到了本地代码库的抄袭,避免软件授权纠纷。同时能够进行漏洞扫描,避免有漏洞的第三方包进入内部系统。

● Artifactory – 管理第三方依赖(NPM,YUM,Docker,Debian 等),存储所有自研件到本地仓库。为所有自研件添加元数据,为之后的产品发布提供自动化上线的 REST API。

2. 有了工具栈,然后呢?

●CA 的自研件通常会比较大,当转变为 DevOps 模式时,高频率的拷贝,构建,测试会花费大量的时间。

● Clone 到远程研发中心通常比较慢。

· 仓库的复制受到带宽影响。

· 内网复制到外网复制的差距在7-10倍。

所以CA 需要先定义”完成”目标

● 在多研发中心里按需复制工件。

● 在几分钟之内创建出一条运行环境。

● 产品能够实现自动升级(如果有更新发布)。

● 能够实现按需的扩容构建环境。

3. CA 快速发布平台工具链实践

CA 搭建统一交付平台,实现快速发布

● Nutanix

Nutanix 是 CA 现有的 IT 基础设施平台,用于装机,网络,部署等等。

● Vmware + Centos/Docker

Vmware实现 底层虚拟化,快速创建虚机环境, 为Centos 或者 Docker提供计IaaS 服务。

● Artifactory

使用 Artifactory 作为异地复制,和本地缓存的中央仓库。 所有人访问的是本地的缓存,提供开发和构建的效率。所有的二进制包,无需担心存储,数据备份,Artifactory 都已经保管好。

同时,Artifactory 是一站式的Docker 的镜像注册中心,因为所有的自研件,yum 仓库,第三方依赖,bower,NPM都存储在 Artifactory。

Artifactory 提供了  多Docker注册中心的支持,这为 CA 提供了 dev 的 Docker 仓库,以及生产环境的 Docker 仓库。

使用 Bintray 作为全球分发的平台,为全球的用户提供了快速下载软件的通道。包含了软件在全球下载量的统计,以及权限的控制。

● Github Cache

CA 搭建统一交付平台,实现快速发布

由于 CA 的代码库非常大,所以需要为Git提供 CDN。CA 构建了内部的 Github Cache,目的是解决跨研发中心的大量代码克隆,快速为程序猿创建 workspace,已经构建环境。

CA 通过 webhook 封装 Git,用户的仓库权限,仓库复制,SSH key 配置等都通过 webhook 配置到底层 Git。当用户改变了仓库内容,SSH 配置,都会通过 webhook 反映到底层。

这个系统使用 Nodejs 实现,用户的 clone 请求通过 Apache代理到 Git.

● Jenkins服务

使用 Docker 打包 Centos 和 Ubuntu 的Jenkins 镜像,为整个公司提供公共镜像,任何团队可以重用基本 Jenkins 镜像,并且实现按需的创建构建环境。

统一快速发布平台带来的价值

CA通过搭建统一快速发布平台,为 CA 带来了巨大的变化,这些变化包含:

● 已经实现跨研发中心按需复制二进制包。

● 能够实现在数分钟之内,快速构建一套环境,用户测试和部署。

● 为产品发布实现最小化的配置。

● 12GB 的构建结果之前需要400分钟拷贝到另一个研发中心。现在在新的方式下,拷贝只需花费12分钟,这得益于 Docker 的镜像打包,以及 Artifactory 基于 Checksum 的存储,不会重复传输未变化的文件。

● 产品实现自动化更新。

● 按需扩容构建集群。