CODING 带你进入“代码即制品”时代
近期 CODING 团队在 2019 KubeCon 大会上发布 DevOps 一站式解决方案:CODING 2.0。此次 CODING 全新上线了持续集成与制品库模块,通过自动化与标准化的方式来帮助开发者摆脱编译、构建、集成、制品管理等重复劳动,旨在打造沉浸式开发体验。在 KubeCon 大会现场,我们以一个基于 Spring 的模版项目为例,展示了开发者如何基于 CODING 轻松完成编码到构建制品的过程。
新项目创建首先新建一个项目,选择一个您熟悉的开发语言预置模版。预置代码模版提供了从代码生成、持续集成、制品库的自动配置,并已预置了 Dockerfile ,实现 Docker 容器化的打包方式。目前代码模版已内置了包括 Java、Ruby、Android、Node.js、Python 等主流语言开发框架的网页或移动端应用。
只需几分钟,项目即可创建完毕。CODING 为您创建了一个代码仓库,并将一个简单 Java 网页应用的代码推送到仓库 master 分支,还为您创建一条可直接运行的构建流水线,产物为 Docker 镜像。基于创建好的代码仓库和构建流水线您可以立即进行代码开发,并且快速集成代码。
接下来我们基于创建好的模版项目 spring-demo ,通过三个环节:代码托管、持续集成、制品管理,来看看 CODING 的 DevOps 配置具体是什么样的。
代码托管CODING 提供代码托管能力,并支持 Git 与 SVN 的代码提交方式。在自动生成的代码仓库中我们看到了 Maven 编译脚本、Jenkins 构建脚本、Docker 镜像打包脚本、网页应用的源码。在 README 文件中详细介绍了各个源码文件的作用以及如何运行该网页应用,对于开发新手来说可以说是手把手程度的详细介绍。您可以通过本地 Git/SVN 客户端来提交代码。
持续集成修改后的代码如何集成到软件当中来?我们来看看预置模版下生成好的构建任务,并学习如何修改持续集成配置以满足更多的场景需求。
- 在下图中可以看到系统已自动运行过第一次的构建,在持续集成首页您可以清晰地看到每次构建结果的状态、触发原因、持续时长等基本信息。CODING 的持续集成支持多 Job 并发运行,如果您的研发团队有这方面的需求,在持续集成页面按需创建多个构建任务即可。
- 在构建记录中您可以看到每次构建结果的详细信息。比如构建过程的运行状态,如果遇到构建失败的情况,您就可以在该页面查看失败环节的日志信息以便快速修复构建流水线。您还可以看到改动记录、测试报告、还有生成的构建产物(比如 Jar/War/脚本/配置文件等构建半成品)。最终的构建产物(比如 Docker 镜像)通过简单配置即可自动推入制品库中,稍后我们会详细介绍制品库。
- 接下来我们来看看构建任务的具体配置是怎样的。在触发方式中您可以按需设置触发方式、邮件通知人员。在持续集成过程中您可以选择通过图形化编辑器或者文本编辑器(如果您对 Jenkinsfile 脚本熟悉)的方式来详细配置构建的每个环节。针对一些持续集成过程中无法明文展示或者易变的信息,您可以通过环境变量或者凭据注入的方式来进行设置。如果想要加快构建速度,您可以打开缓存配置,同时还支持清空重置。
在持续集成完成生成构建产物后,我们来看看如何使用 CODING 的制品库来管理这些制品。
- CODING 制品库的层级关系为:仓库 > 包 > 版本,每个层级描述如下:
仓库:用于管理不同类型的仓库和仓库下的包资源,可以设置仓库对外的访问权限。
包:构建产物对外提供访问的基础单元,用于介绍当前构建产物的用途和使用指引。
版本:列出某个包下的所有构建产物,详细记录了每次构建产物的版本迭代更新变化。
- 仓库当中会明确提示推送以及拉取指引,不同的制品类型对应着不同的存储、拉取、共享方式。除了通过 CODING 的持续集成将制品自动推送到制品库,也可以在本地环境当中推送或上传您的制品。
- 您可以设置仓库的基本信息(仓库类型、名称、描述、权限范围),也可以设置包的基本信息(包名称、许可证、成熟度、问题跟踪等)。在描述软件包的页面,您可以详细的了解版本信息(版本号、哈希值、上传者等),以便您的研发团队能清晰地追溯每个制品的情况。
目前 CODING 制品库已支持 Docker、NPM、PyPI、Generic File、Helm 等多种类型的制品管理,后续会支持更多制品类型,敬请期待。