docker - 使用 Jenkins 进行 React 应用程序的持续集成和持续交付
问题描述
我想为React App
我工作的公司设置 CI 和 CD 流程,使用了以下技术:
React
对于前端Flask
对于后端Docker
GitHub
用于源代码控制管理
目前我们正在使用脚本来构建应用程序,而不是将其手动部署到AWS S3
存储桶中,我已经阅读了一些文章并观看了教程,几乎所有这些都涵盖了Java
基于项目的内容,并Maven
在部署之前用作构建工具来打包项目。
如果您能提供帮助,将不胜感激。
解决方案
我同意这个问题有点宽泛,但一般来说,你应该为你的前端和后端应用程序设置不同的 CI 管道。
这会带来很多影响,因为这将使您能够:
- 为您的后端/前端应用程序使用不同的发布周期
- 减少构建时间
但是,您可能会在某个时候运行集成步骤以确保所有内容都结合在一起。一般来说,您的管道应该看起来像(这应该在每次提交时运行):
还要确保您选择的 CI/CD 工具不会妨碍您并且足够灵活(例如:GitLab、Jenkins)。
- 构建 docker 镜像
- Linter(以确保最小的代码格式和质量)
- 单元测试
- 代码覆盖率(代码覆盖率本身有点无用,但结合它的发展方式和执行最低百分比可能有助于提高质量)
- 功能测试(例如,如果它使用数据库,这对您的后端堆栈更有意义......)
- 如果一切顺利,则推送到 DockerHub
- 将最近构建的镜像部署到对应的环境中。示例合并开发意味着部署到您的登台环境
推荐阅读
- html - 如何在没有危险的 SetInnerHTML 的情况下在 React 中呈现 HTML 实体?
- javascript - 问:对齐标题“高”迫使图形变小,如何保持图形宽度?
- mps - SWITCH 宏的 initValue
- android - 根据 REST 服务返回的值填充 Spinner
- php - 将较低的数字从行导出到 csv
- sql - 增量计数
- opengl-es - GLSL:为什么这个bloomEffect 和gloomEffect 代码只输出黑白图像?
- hybris - 删除 urlEncodingAttributes 值会中断页面(hybris)
- javascript - 如何在 ES6 中使用 reduce() 计算平均值?
- symfony - Symfony 4: Monolog error in PROD env via cache-clear