
连续部署是软件开发中的一种特殊方法,用于快速,安全和有效地实现软件中的各种功能。
主要思想是创建一个可靠的自动化流程,该流程允许开发人员快速向用户提供成品。 同时,生产中不断进行更改-这称为连续交付管道(CD管道)。
Skillbox建议:实用课程“ Mobile Developer PRO” 。
我们提醒您: 对于所有“ Habr”读者来说,使用“ Habr”促销代码注册任何Skillbox课程时均可享受10,000卢布的折扣。

要控制流量,您可以使用多种工具,其中包括付费工具和完全免费的工具。 本文介绍了在开发人员中最受欢迎的三种解决方案,它们可能对每个程序员都有用。
詹金斯
完全独立的开源自动化服务器。 值得与他合作以使与软件的组装,测试,交付或部署有关的所有类型的任务自动化。
最低PC要求:
最佳:
为了工作,您还需要其他软件-Java Runtime Environment(JRE)版本8。
体系结构(分布式计算)如下:

Jenkins服务器-一个负责GUI托管以及整个程序集的组织和执行的安装。
Jenkins节点/从站/构建服务器-可以配置为代表Master(主节点)执行组装工作的设备。
Linux安装首先,您需要将Jenkins存储库添加到系统中:
cd / tmp && wget -q -O-pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt键添加-echo'deb pkg.jenkins.io/debian-stable binary /'| sudo tee -a /etc/apt/sources.list.d/je更新软件包存储库:
sudo apt更新安装Jenkins:
sudo apt安装詹金斯之后,默认情况下端口8080将在系统上提供Jenkins。
要检查功能,请在浏览器中打开
localhost :8080地址。 然后,系统将提示您输入具有root权限的用户的初始密码。 此密码位于文件/ var / lib / jenkins / secrets / initialAdminPassword中。
现在一切准备就绪,您可以开始创建CI / CD流。 工作环境的图形界面如下:


詹金斯的优势:
- 主/从架构提供的可扩展性;
- REST XML / JSON API的存在;
- 借助插件可以连接大量扩展;
- 一个活跃且不断发展的社区。
缺点:
团队城市
JetBrains的商业开发。 该服务器非常适合简单的设置和出色的界面。 默认配置中有大量功能;可用插件的数量在不断增加。
此内容需要Java Runtime Environment(JRE)版本8。
服务器对硬件的要求不是关键的:
- 内存-3.2 GB;
- 处理器-双核,3.2 GHz;
- 带宽为1 Gb / s的通信通道。
该服务器使您可以在工作中实现高性能:
- 具有300个装配配置的60个项目;
- 向汇编日志分配2 MB;
- 50名建筑代理商;
- 能够在Web版本中使用50个用户,在IDE中使用30个用户;
- 100个外部SLE连接,通常是Perforce和Subversion。 平均更改时间为120秒;
- 每天超过150次修改;
- 在一台服务器上使用数据库;
- JVM服务器进程设置:-Xmx1100m -XX:MaxPermSize = 120m。
代理要求由运行程序集确定。 服务器的主要任务是跟踪所有连接的代理,并根据兼容性要求从这些代理之间的队列中分发程序集,并报告结果。 代理具有各种平台和操作系统,以及预配置的环境。
有关装配结果的所有信息都存储在数据库中。 首先,这是历史记录和其他类似数据,VCS更改,代理,构建队列,帐户和用户权限。 该数据库不只包含程序集日志和工件。
Linux安装要使用Tomcat Servlet容器手动安装TeamCity,请使用TeamCity归档文件:TeamCity .tar.gz。 您可以
从这里下载。
tar -xfz TeamCity.tar.gz
/ bin / runAll。 sh [开始|停止]
首先,您需要选择将要在其中存储装配数据的数据库类型。

默认配置在
localhost :8111 /上运行,并且一个注册的构建代理在同一台PC上运行。
TeamCity的优势:
- 设置简单;
- 方便的界面;
- 大量的内置功能;
- 支持服务;
- 有一个RESTful API;
- 好的文件;
- 安全性好。
缺点:
- 有限的整合;
- 它是一种付费工具;
- 一个小社区(但是这个社区正在增长)。
高德
一个需要安装Java运行时环境(JRE)版本8的开源项目。
系统要求:
- 内存-最小1 GB,更好;
- 处理器-双核,核心频率为2 GHz;
- 硬盘-至少1 GB的可用空间。
代理商:
- RAM-至少128 MB,最好是更多;
- 处理器-至少2 GHz。
服务器提供代理并为用户提供方便的界面:

阶段/工作/任务:
Linux安装回声“ deb download.gocd.org /” | sudo tee /etc/apt/sources.list.d/gocd.list
curl download.gocd.org/GOCD-GPG-KEY.asc | sudo apt键添加-
Add-apt-Repository PPA:openjdk-r / ppa
apt-get更新
apt-get install -y openjdk-8-jre
apt-get install go-server
apt-get install go-agent
/etc/init.d/go-server [启动|停止|状态|重新启动]
/etc/init.d/go-agent [开始|停止|状态|重新启动]默认情况下,GoCd在
localhost上运行:8153。
GoCd优势:



- GoCD在包括Docker,AWS等最流行的云环境中优化了CD工作流程。
- 该工具使纠正管道中的故障成为可能,为此,可以实时跟踪从提交到部署的每个更改。
缺点:
- 至少需要一个代理;
- 没有控制台显示所有已完成的任务;
- 要执行每个命令,您需要为管道配置创建一个任务。
- 要安装插件,您需要将.jar文件移动到<go-server-location> / plugins / external并重新启动服务器;
- 相对较小的社区。
结论
这些只是三个工具,实际上,还有更多工具。 选择起来很困难,因此您需要注意其他方面。
该工具的开源代码使您可以了解它的含义,并且添加新功能的速度更快。 但是,如果某些事情不起作用,那么您就只能依靠自己和社区的帮助。 付费工具提供的支持有时可能很关键。
如果安全是最重要的,则应使用本地工具。 如果不是,那么选择SaaS解决方案是一个不错的选择。
最后:为了确保真正有效的连续部署过程,有必要制定标准,其标准的特异性将有可能缩小可用工具的选择范围。
Skillbox建议: