我正在创建一个完整的CI/CD环境,包括从源代码编译到部署到Docker这样的容器中的所有必要步骤。这是一个完整的堆栈应用程序,包括前端和后端层。根据我的规范,前端使用Angular,后端使用Java。
我正在学习如何实现为完成流程而必须执行的任务的工作流。我一直在研究以下所有概念:对于前端,任务像模糊或缩小。对于前端和后端,代码覆盖,SAST和DAST测试,和性能测试(负载,阻力,容量,可伸缩性,压力等)。
我以前在简单的CI/CD poojects中工作过,我在Java中有我的代码,将代码上传到Git,在Jenkins中有一个管道来检查是否在Git中完成了新的推送并测试它,如果成功,则将应用程序部署到Docker容器中。
有了这些新的步骤,在理解了它们是什么之后,我试着猜测在这个[代码- GIT - Jenkins - Docker]的过程中它们是如何排序的。什么先来,什么后来,以便在我的脑海中有一幅我在设计整个过程时必须遵循的顺序的画面。
我看到Jenkins可以运行SAST和DAST测试(我以前从未这样做过)使用一些插件,如OWASP插件或SonarQube插件(在Google上搜索之后,我不知道哪一个更好)对于代码覆盖率,我知道在我的项目中编码的单一测试将提供IDE的代码覆盖率功能(我使用IntelliJ)在IDE中检索结果,但我听说JACOCO是Jenkins的插件,我还读到SonarQube有一些代码覆盖。
要在CI/CD环境中建立可靠的工作流,正确的顺序是什么?我认为应该是:
所有在Git之后和Docker之前开始的工作流,我都会使用Jenkins来完成,因为我已经看到几乎所有我想遵循的步骤都有可用的插件。
- 对于前端:[源代码-〉Git -〉代码覆盖测试-〉SAST -〉依赖性检查-〉缩小-〉模糊处理-〉DAST -〉部署]
- 对于后端:[源代码-〉Git -〉代码覆盖测试-〉SAST -〉依赖性检查-〉DAST -〉部署]
我也读过Jenkins的性能测试,但是找不到相关的插件(压力、可伸缩性、负载、容量等),我不知道哪个时候做这些测试最好,是在DAST之后,还是在代码覆盖步骤之后,还是在部署应用程序之后
我所见过的可能适用于此的工具(除其他外):
- 代码覆盖范围:JUnit,声纳库贝,雅各布
- SAST:下一代警告插件,SonarQube,CodeQL
- 依赖性检查:OWASP依赖性检查
- 数据:声纳Qube,OWASP ZAP
为了有一个正确的CI/CD过程,我上面描述的顺序是正确的吗?我不想在代码覆盖之前执行DAST测试,或者在缩小之前执行混淆,或者类似的事情,以避免过程中的问题。
谢谢你能给予我的任何帮助。
丹尼尔。
1条答案
按热度按时间fiei3ece1#
就我的两分钱:
首先,事情不一定要按顺序进行:在大多数CI/CD管道中,事情是并行运行的:你可以同时运行代码覆盖和构建/缩小代码,或者和DAST/SAST测试。2并行运行会更快。
第二,你希望失败得快:如果构建失败了,剩下的就没用了。2如果覆盖率没有达到某个阈值,在某些情况下你可能还是想推进到生产阶段,所以有些步骤是硬停止,而有些是软停止。3硬停止应该尽可能先出现(或同时出现)以快速失败。