我目前正在使用 Jenkins 和一个多配置项目运行构建和测试,以在不同的操作系统计算机上编译和测试我们的应用程序。
在扩展我们的测试时,我现在需要针对分布式环境运行测试,但不确定如何在 Jenkins 上进行设置。
我有四台计算机模拟我的生产环境(Prod1 - Prod 4),它们在每台计算机上都有我们的应用程序的多个实例作为服务(foo.exe)运行。IE:
Prod1 Prod2
- Instance 1 - Instance 1
- Instance 2 - Instance 2
- Instance 3 - Instance 3
Prod3 Prod4
- Instance 1 - Instance 1
- Instance 2 - Instance 2
- Instance 3 - Instance 3
Prod 1 和 2 是一个操作系统版本(Windows Server 2012),Prod 3 和 4 是不同的操作系统(Windows Server 2016 / Linux 等)。这些服务旨在能够驻留在不同的计算机上,以实现容错和可扩展性。
在我运行我们的测试之前,我需要有一个脚本连接到每台计算机并停止现有的服务实例(Windows 上的批处理文件可以做到这一点)并从 Jenkins 构建作业中复制新的可执行文件,然后再次启动实例。对于多配置作业,这很容易。
服务器上的实例正在侦听 Apache ActiveMQ 队列以执行任务,该队列有自己的服务器。我会将测试作业发送到 ActiveMQ 服务器。我不确定如何配置计算机(PROD1-PROD4)进行更新,并在完成所有计算机后,然后将测试提交到不同的计算机。
虽然多个作业配置可以让我在各个节点上启动相同的东西,但我需要确保所有 4 台计算机都已更新,然后再继续在 ActiveMQ 服务器上启动测试脚本 (SOAP UI)。
我会为服务更新创建一个多配置作业,然后创建一个管道作业将这些流程链接在一起吗?有没有更好的办法?