jenkins - 主机重启后如何继续詹金斯管道。
问题描述
我有一个 Jenkins 作业,目前用于重新启动主机,这是管道的一部分,并且有几个下游作业。目前,在开始下游构建之前,该作业正在重新启动并处于休眠状态。在作业中是否有更好的方法来检查主机是否在继续而不是使用睡眠之前备份?
Reboot_host 作业当前正在执行:
ssh <hostname> "sudo reboot"
sleep 90
主机是虚拟机,这就是睡眠时间如此短的原因。
解决方案
我假设您在Jenkinsfile
这里使用 a ,因为您说的是“管道”;如果没有,请提供有关您工作的更多信息(带有执行外壳的自由式等)。
您可能需要sleep
参与其中,但您可以结合使用它retry
来获得更快的成功(和更快的失败)。假设您只需要启动虚拟机,您可以使用以下内容:
retry(20){
sleep time: 5 unit: 'SECONDS'
sh 'ssh -o ConnectTimeout=1 <hostname> exit'
}
这将每 5 秒尝试一次 ssh 到主机。添加 ConnectTimeout 意味着ssh
将只等待 1 秒以完成连接。exit
只是确保成功连接断开。retry
将评估命令最多 20 次,直到sh
命令具有0
(成功)退出值。如果它运行 20 次而没有成功,则构建将失败(这可能很好,因为这意味着您的 VM 不可用于下游作业)。
如果您正在等待某项特定服务,您可以curl
或以其他方式尝试联系该服务,而不是使用ssh
.
推荐阅读
- class - Pytorch 的 nn.Linear(x,y) 返回什么?
- css - 如何在 {xaringan} 演示文稿中使 {stargazer} 表更小?
- google-apps-script - 自动归档gmail的脚本突然被删除了
- google-pagespeed - 为什么我的“Core Web Vitals”几乎总是空的?
- lsmeans - 如何解释最小二乘均值和标准误差
- python - 函数内部的while循环
- sql - MS Access 2016 左连接创建重复记录
- python - 从递归函数中获取两个不同的值?
- java - 问题 sql 请求返回 null 尽管它在 xampp SGBD 中返回正确的值
- c++ - c++ 使用包含向量的类时 - 候选人需要 2 个参数,提供 0