Github Actions条件步骤异常:READY为true却触发退出步骤
解决GitHub Action中Selenium Grid状态判断异常问题
问题根源
- 使用
jq '.value.ready'获取状态时,返回的是带双引号的字符串"true",而非布尔值true - GitHub Actions的环境变量均为字符串类型,因此
env.READY实际存储值是"true"(带引号),和布尔true直接比较时不相等,导致env.READY != true条件成立,错误触发退出步骤
解决方法
方法一:修改jq命令输出原始字符串(推荐)
在jq命令中添加--raw-output(缩写-r)参数,去掉返回结果的引号,让READY变量存储纯字符串true:
- name: Get Selenium Grid status variables run: | echo "READY=$(curl 'http://localhost:4444/status' | jq -r '.value.ready')" >> $GITHUB_ENV NODE_COUNT=$(curl 'http://localhost:4444/status' | jq '.value.nodes | length')
(注:同时优化了NODE_COUNT的jq命令,合并为单个管道,减少一次curl请求)
方法二:修改if条件为字符串匹配
保持现有变量不变,将条件判断改为和带引号的字符串"true"比较:
- name: Confirm Grid is up if: ${{ env.READY }} == '"true"' run: echo "Selenium Grid is Ready" - name: Exit if Grid is down if: ${{ env.READY }} != '"true"' run: echo "Selenium Grid wasn't ready, ending action" && exit 1
验证效果
修改后,当Selenium Grid处于就绪状态时,条件判断会正确匹配,仅触发Confirm Grid is up步骤,不会执行退出逻辑。
内容的提问来源于stack exchange,提问作者King
相关产品推荐
相关产品推荐

