##初探在容器上构建持续部署
本文插图
【##初探在容器上构建持续部署】
作者 | 倚天码农
责编 | 徐威龙
封图| CSDN下载于视觉中国
要想理解持续集成和持续部署 , 先要了解它的部分组成 , 以及各个组成部分之间的关系 。 下面这张图是我见过的最简洁、清晰的持续部署和集成的关系图 。
本文插图
图源:sonatype.com
本文插图
持续部署
如图所示 , 开发的流程是这样的:
程序员从源码库(Source Control)中下载源代码 , 编写程序 , 完成后提交代码到源码库 , 持续集成(Continuous Integration)工具从源码库中下载源代码 , 编译源代码 , 然后提交到运行库(Repository) , 然后持续交付(Continuous Delivery)工具从运行库(Repository)中下载代码 , 生成发布版本 , 并发布到不同的运行环境(例如DEV , QA , UAT ,PROD) 。
图中 , 左边的部分是持续集成 , 它主要跟开发和程序员有关;右边的部分是持续部署 , 它主要跟测试和运维有关 。 持续交付(Continuous Delivery)又叫持续部署(Continuous Deployment) , 它们如果细分的话还是有一点区别的 , 但我们这里不分得那么细 , 统称为持续部署 。 本文侧重讲解持续部署 。
持续集成和部署有下面几个主要参与者:
源代码库:负责存储源代码 , 常用的有Git和SVN 。
持续集成与部署工具:负责自动编译和打包以及把可运行程序存储到可运行库 。 比较流行的有Jenkins , GitLab , Travis CI , CircleCI 等
库管理器(Repository Manager):也就是图中的Repository , 我们又叫运行库 , 负责管理程序组件 。 最常用的是Nexus 。 它是一个私有库 , 它的作用是管理程序组件 。
库管理器有两个职能:
管理第三方库:应用程序常常要用到很多第三方库 , 并且不同的技术栈需要的库不同 , 它们经常是存放在第三方公共库里 , 管理起来不是很方便 。 一般公司会建立一个私有管理库 , 来集中统一管理各种第三方软件 , 例如它既可以做为Maven库(Java) , 也可以做为镜像库(Docker) , 还可以做为NPM库(JavaScript) , 来保证公司软件的规范性 。
管理内部程序的交付:所有公司在各种环境(例如DEV , QA , UAT ,PROD)发布的程序都由它来管理 , 并赋予统一的版本号 , 这样任何交付都有据可查 , 同时便利于程序回滚 。
本文插图
持续部署步骤
各个公司对持续部署(Continuous Deployment)的要求不同 , 它的步骤也不相同 , 但主要包括下面几个步骤:
下载源码:从源代码库(例如github)中下载源代码 。
编译代码:编译语言都需要有这一步
测试:对程序进行测试 。
生成镜像:这里包含两个步骤 , 一个是创建镜像 , 另一个是存储镜像到镜像库 。
部署镜像:把生成的镜像部署到容器上
上面的流程是广义的持续部署流程 , 狭义的流程是从库管理器中检索可运行程序 , 这样就省去了下载源码和编译代码环节 , 改由直接从库管理器中下载可执行程序 。 但由于并不是每个公司都有单独的库管理器 , 这里就采用了广义的持续部署流程 , 这样对每个公司都适用 。
本文插图
持续部署实例
- 「预计 3 分钟读完」助力构建基于AI的服务生态体系,第四范式完成2.3亿美元C+轮融资
- 人员防控:合肥:构建五道硬核“监督网” 筑牢境外输入“防疫墙”
- PingWest品玩:Gartner报告:阿里云容器产品布局全球第一
- 【腾讯科技】微软谷歌亚马逊云竞争开启新战线 无需编写代码短时间内构建应用
- Gartner报告:阿里云容器产品布局全球第一
- 『腾讯科技』265亿美元!美国第三、第四大运营商正式合并 努力构建最好的5G网络
- 『中国经济网』构建中国云生态|华云数据携手云新信息推出数据中心设备管理平台DCM联合解决方案
- 「滕州房产超市网」滕州亿和广场2020年3月工程播报,一砖一瓦构建幸福
- 如何借助openEuler 20.03 LTS版本构建企业级服务器操作系统
- [科技女王范儿]后者致力于构建世界范围的三维建模,Niantic宣布收购AR点云技术公司6D.ai