【发布时间】:2021-11-04 18:02:24
【问题描述】:
我正在使用 GitHub Actions 工作流程运行测试,如果测试生成的结果对象为空,我希望测试失败。如何检查 JSON 对象是否为空?
我当前的工作流作业包含以下步骤:
- name: Fail if security tests found any issues
if: ${{ steps.securityTestsResults != {} }}
uses: actions/github-script@v3
with:
script: |
core.setFailed('security tests failed: non-empty results')
但是上面的代码目前导致错误:
Invalid workflow file : .github/workflows/securityTests.yml#L34
The workflow is not valid. .github/workflows/securityTests.yml (Line: 34, Col: 11): Unexpected symbol: '{}'. Located at position 31 within expression: steps.securityTestsResults != {}
这很令人困惑,因为我相信我的代码可以在常规 javascript 中运行,但它似乎在这里不起作用。我也尝试过Object.keys(obj).length === 0 和JSON.stringify(obj) == '{}',但它们也不起作用(它无法识别Object 或JSON 类)。
【问题讨论】:
-
第 34 行,第 11 列是什么?
-
这是包含
if: ${{ steps.securityTestsResults != {} }}的行 -
看起来像是 yaml 转义问题。您是否尝试将行放在双引号内?
-
好的,我尝试将其更改为
if: "${{ steps.securityTestsResults != {} }}",但仍然出现完全相同的错误。 -
对不起,这可能使它成为一个不是你想要的字符串。您可以尝试的另一件事是使用管道 |并像在脚本键中一样在下一行添加代码
标签: javascript github javascript-objects github-actions