我想知道是否有外部 Jenkins 编排的解决方案?
让我先解释一下我们的设置:
- 我们有几个巨大的 Java 工件需要通过持续集成管道进行测试
A
作业被配置为在提交后获取代码、运行单元测试并自行构建工件B
作业(目前有 4 个)使用空数据库并行运行不同的烟雾测试集。它们仅在A
作业成功后触发。这些作业使用外部资源:云节点(将部署工件)和数据库池中的数据库。Jobs 在 Jenkins 中可以返回三种状态:- 绿色:云节点获取成功,工件已部署,所有测试通过
- 黄色:未检测到基础设施故障,但部分(或全部)测试失败--> 责备开发人员/QA
- 红色:还有一个基础设施故障:云混乱、数据库不可用、工件部署失败。--> 责备 DevOps
C
作业:仅当所有B
作业都为绿色时才运行。否则流程结束。将工件上传到 NexusD
作业:运行功能测试:这里的几个作业将重用B
作业中的云节点,以节省部署时间。我们不在乎他们将获得哪种状态:绿色、黄色或红色。只需记录结果即可。但是,这里有两个作业将从A
集群配置中的作业部署原始工件,如果部署成功,则E
作业独立启动(即,如果D1
作业失败,E1
则不应启动,但如果D2
作业在同一工作流程中成功,E2
则应触发) .
工作流完成后,您需要确定一个状态:如果存在致命错误(任何红色构建),则工作流必须具有失败状态。
工作流完成后,必须释放所有资源:云节点和数据库。
我可以使用哪个工作流/流程工具或库来实现这样的逻辑?
我们还有其他几个具有不同流程的管道,因此它应该是灵活的。
当前的实现具有非常复杂的逻辑和几个将处理共享资源的技术工作。我们希望在一个地方实现该逻辑:一个协调器,它将在外部触发 Jenkins 作业,为它们提供运行参数。