如何在Jenkins中通过Vagrant手动停止任务时终止EC2实例

108次阅读
没有评论

问题描述

在使用Jenkins运行通过Vagrant启动的EC2实例的自由式任务时,发现当他手动取消任务时(点击X按钮),EC2上的实例仍然在运行。他想知道如何确保在取消任务时终止实例。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

使用Jenkins的Post build task插件可以实现在任务取消时终止EC2实例。按照以下步骤进行设置:
1. 安装并启用Jenkins的Post build task插件。
2. 在任务配置页面的“Post-build Actions”部分,添加一个“Post build task”。
3. 在“Script”字段中添加以下命令:

vagrant destroy -f

这个命令将强制销毁Vagrant管理的所有实例。
4. 在“Log text”字段中添加规则,以确保上述命令仅在任务被取消时执行。例如,可以添加一个规则,当日志中出现“Build was aborted”时执行上述命令。
以下是一个示例配置的截图:
如何在Jenkins中通过Vagrant手动停止任务时终止EC2实例
在上面的示例中,我们使用了Post build task插件,并在“Script”字段中添加了vagrant destroy -f命令。同时,我们添加了一个规则,当日志中出现“Build was aborted”时执行该命令。
这样,当任务被手动取消时,插件将执行该命令,终止EC2实例。

方案2

使用脚本或工具来管理EC2实例的启动和停止可能会增加复杂性,并且需要确保脚本或工具的正确配置。
另一种方法是编写脚本或使用工具来控制EC2实例的启动和停止。你可以使用AWS CLI或其他第三方工具来管理EC2实例的状态。
以下是一个简单的bash脚本示例,可以在任务被手动取消时停止EC2实例:

#!/bin/bash
# 停止EC2实例
aws ec2 stop-instances --instance-ids your_instance_id

在这个示例中,我们使用AWS CLI的stop-instances命令来停止指定的EC2实例。你需要将your_instance_id替换为你要停止的实例的实际ID。
请注意,使用脚本或工具来管理EC2实例的启动和停止可能会增加复杂性,并且需要确保脚本或工具的正确配置。

正文完