持续部署是软件开发中的一种特殊方法,用于快速、安全、高效地实现软件中的各种功能。
主要思想是创建一个可靠的自动化流程,使开发人员能够快速将成品交付给用户。 与此同时,生产也不断发生变化——这就是所谓的持续交付管道(CD Pipeline)。
技能箱推荐: 实践课程
“移动开发者专业版” .我们提醒: 对于“Habr”的所有读者 - 使用“Habr”促销代码注册任何 Skillbox 课程可享受 10 卢布的折扣。
为了控制流量,您可以使用多种工具,包括付费工具和完全免费的工具。 本文介绍了开发人员中最流行的三种解决方案,对每个程序员都有用。
詹金斯
完全独立的开源自动化服务器。 它值得用来自动化与构建、测试、运输或部署软件相关的各种任务。
最低电脑要求:
- 256 MB RAM,1 GB 文件空间。
最佳:
- 1 GB 内存,50 GB 硬盘。
要工作,您还需要其他软件 - Java 运行时环境 (JRE) 版本 8。
架构(分布式计算)如下所示:
Jenkins Server 是一个负责 GUI 托管以及组织和执行整个构建的安装。
Jenkins 节点/从属/构建服务器 - 可以配置为代表主节点(主节点)执行构建工作的设备。
Linux 安装
首先需要将 Jenkins 存储库添加到系统中:
cd /tmp && wget -q -O —
更新包存储库:
sudo apt update
安装詹金斯:
sudo apt安装詹金斯
此后,Jenkins 将通过默认端口 8080 在系统中可用。
要检查功能,您需要在浏览器中打开该地址
现在一切准备就绪,您可以开始创建 CI/CD 流程。 工作台的图形界面如下所示:
詹金斯的优势:
- 主/从架构提供的可扩展性;
- REST XML/JSON API 的可用性;
- 通过插件能够连接大量扩展;
- 活跃且不断发展的社区。
缺点:
- 没有分析块;
- 用户界面不是很友好。
团队城市
JetBrains 的商业开发。 该服务器很好,设置简单,界面出色。 默认配置具有大量功能,并且可用插件的数量在不断增加。
需要 Java 运行时环境 (JRE) 版本 8。
服务器硬件要求并不重要:
- 内存 - 3,2 GB;
- 处理器 - 双核,3,2 GHz;
- 容量为 1 Gb/s 的通信通道。
服务器可以让您实现高性能:
- 60 个项目,300 种构建配置;
- 2 MB 分配给构建日志;
- 50 个构建代理;
- 能够在 Web 版本中与 50 个用户一起工作,在 IDE 中与 30 个用户一起工作;
- 100 个外部 VCS 连接,通常是 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 [开始|停止]
首次启动时,您需要选择存储装配数据的数据库类型。
默认配置运行于
TeamCity 的优势:
- 易于设置;
- 用户友好的界面;
- 大量内置功能;
- 支持服务;
- 有一个 RESTful API;
- 良好的文档;
- 安全性好。
缺点:
- 有限的整合;
- 这是一个付费工具;
- 一个小社区(但是,它正在增长)。
光碟
一个开源项目,需要 Java 运行时环境 (JRE) 版本 8 才能安装和运行。
系统要求:
- RAM - 最低 1 GB,越大越好;
- 处理器——双核,核心频率2GHz;
- 硬盘 - 至少 1 GB 可用空间。
代理:
- RAM - 至少 128 MB,越大越好;
- 处理器 - 至少 2 GHz。
服务器保证代理的运行,并为用户提供方便的接口:
阶段/工作/任务:
Linux 安装
回声“ deb
卷曲
添加 apt-存储库 ppa:openjdk-r/ppa
APT-get的更新
apt-get install -y openjdk-8-jre
apt-get 安装 go-server
apt-get 安装 go-agent
/etc/init.d/go-server [启动|停止|状态|重新启动]
/etc/init.d/go-agent [启动|停止|状态|重新启动]
默认情况下,GoCd 运行于
GoCd的优势:
- 开源;
- 安装配置简单;
- 良好的文档;
- 出色的用户界面:
- 能够在一个视图中显示逐步的 GoCD 部署路径:
- 优秀的管道结构展示:
- GoCD 优化了最流行的云环境(包括 Docker、AWS)中的 CD 工作流程;
- 该工具可以纠正管道中的问题,实时跟踪从提交到部署的每个更改。
缺点:
- 至少需要一名代理人;
- 没有控制台显示所有已完成的任务;
- 执行每条命令,需要为管道配置创建一个任务;
- 要安装插件,您需要将 .jar 文件移动到/plugins/external 并重新启动服务器;
- 相对较小的社区。
作为结论
这只是三个工具,实际上还有更多。 选择起来很困难,因此您肯定需要注意其他方面。
该工具的开源代码使人们可以了解它是什么,并且可以更快地添加新功能。 但如果有些事情不起作用,那么你就只能依靠自己和社区的帮助。 付费工具提供的支持有时可能是至关重要的。
如果安全性是您的首要任务,那么值得使用本地工具。 如果没有,那么选择 SaaS 解决方案是一个不错的选择。
最后,为了确保真正有效的持续部署过程,您需要创建标准,其具体细节将允许您缩小可用工具的范围。
技能箱推荐:
- 两年实践课程
“我是一名专业网络开发人员” .- 在线课程
“C# 开发人员” .- 实践年课程
《PHP 开发者从 0 到 PRO》 .
来源: habr.com