做好准备
在过去的两年中,我一直在从事Node.js项目。 我们使用GitHub进行源管理,使用Jenkins进行持续集成。 我们还有一个基于Docker和Terraform的部署工具 。
在此期间,我们对配置进行了一些改进。 产生积极影响的更改之一是在分支上运行CI管道,并在GitHub上查看反馈。
在合并PR之前检查构建的结果可以防止由于微小错误而造成的大量损坏。 就像忘记运行lint或添加新文件一样。 一旦我们决定自动执行依赖关系的更新,反馈将使其变得快速,安全。
在这篇文章中,我将解释如何使用以下方法配置Continuos集成和部署管道:
- Jenkins用于构建配置。 用于创建构建的多分支管道。 Jenkinsfile,用于决定在每个构建中执行什么
- GitHub用于存储源代码,检查构建输出以及将分支合并到master
- Docker将构建与执行环境隔离。 无论是开发人员机器还是Jenkins节点
特征
构建管道的配置与源代码一起进行版本控制。 这给您:
- 旧配置的历史和回滚功能
- 配置和源的原子更改
- 使用分支来尝试配置本身
分支机构的建立和反馈意味着您可以:
- 在代码审查期间查看构建结果
- 如果分支破坏了构建,则防止分支合并
- 自动合并不间断的更改
其他小事:
- 该构建被定义为一系列步骤而不是作业,因此一旦开始就不会重新进入队列
- 您可以通过编辑文件而不是使用Jenkins Web UI来执行大多数构建配置
缺点
- 您需要学习Jenkinsfile的语法
- 您需要注意两种不同的语法选项(脚本式和声明式)
- 有关如何使用插件的文档并不总是很清楚,并且通常没有任何示例
该应用程序
我创建了一个Node.js Web应用程序作为示例。 为了简化构建,该应用程序没有外部运行时依赖项,例如数据库或服务。 可以扩展此配置以应对外部依赖性,而不会影响隔离性。 例如通过使用Docker Compose