运行 Jenkins 管道中的 Rego 测试

Running Rego Tests in Jenkins Pipeline

我正在尝试 运行 将测试用例重新作为 jenkins 管道的一部分 运行。我以前将我的测试用例和测试用例的输入数据放在一个文件中,它们都成功 运行。

我修改了我的测试用例以从外部 json 文件读取数据,当前文件夹结构如下:test.rego 文件和 input.json 文件在同一文件夹中。

这就是我在 Jenkins 中用来 运行 测试 *./opa test -b -v .*

测试失败并出现错误 data.utilities.test_no_OwnerContact: FAIL 我假设这是因为 rego 测试无法从 input.json

读取数据

当我尝试使用 -i/--input 显式传递输入文件时,我在 jenkins 中看到一个错误 Error: unknown flag: --input

我不确定我使用的是必需的标签还是其他标签。 任何帮助,将不胜感激。 谢谢!

编辑:我打印了捆绑包中的文件,并且看到了 data.json 文件。所以 OPA 引擎无法从 Bundle 中读取数据文件。我该如何解决这个问题?

您在测试中指定输入数据的方式不是使用 input.json 文件,而是通过使用 with .. as 构造模拟输入。示例测试模拟输入可能如下所示:

test_with_mocked_input {
    allow with input as {
        "deployment_name": "testing",
        "replicas": 2 
    }
}

有关详细信息,请参阅 data mocking 上的文档。