GitHub Actions运行器健康检查无法获取版本号问题排查
网站健康检查Job随机失败问题
问题概述
我有一个GitHub Actions工作流,包含3个用于网站健康检查的相似Job,但它们的行为完全随机无规律,我已经尝试了wget和curl的所有可能组合,问题仍未解决。
工作流与脚本详情
- 工作流组成:包含
deploy-to-gcloud部署Job,以及test-after-deployment(主健康检查Job)、test-while-deployment、test-after-deployment-2三个健康检查Job,部署目标为GCP。 - 健康检查执行脚本
test.sh内容:
#!/bin/bash while [ "$status" != "0" ]; do sleep 5 # curl <WEBSITE GOES HERE> wget -S --spider <WEBSITE GOES HERE> 2>&1 | grep HTTP/ # curl -v --silent <WEBSITE GOES HERE> 2>&1 | grep -Po $1 wget <WEBSITE GOES HERE> -q -O - | grep -Po $1 status=$(echo $?) done
- 脚本触发方式:工作流中通过
timeout命令调用该脚本,并传入github.sha作为版本号参数。
测试结果
分别在本地PC和GitHub Codespaces各执行10次测试,结果无固定失败模式:
- 本地PC:7次成功,3次失败,失败涉及不同的wget/curl组合
- GitHub Codespaces:3次成功,7次失败,失败覆盖所有命令组合
关键观察信息
失败场景下,HTTP请求返回HTTP/1.1 200 OK,但始终无法通过grep匹配到指定的SHA值,最终因timeout触发退出码124;成功场景下则能正常返回并匹配到SHA值。
内容的提问来源于stack exchange,提问作者mustafa_khan
相关产品推荐
相关产品推荐

