我们有一个 Tekton 管道,我们希望从中运行我们的 ReadyAPI 测试套件。我们使用来自 SmartBear 的官方镜像 ( https://hub.docker.com/r/smartbear/ready-api-soapui-testrunner )。
该镜像要求您将/project
容器中的文件夹绑定到 ReadyAPI 测试项目所在的主机目录。在我们的例子中,我们的测试项目位于 TektonWorkspace
目录common-workspace/application-foo/tests/application-foo-readyapi-project.xml
中。
在本地(使用docker run
)运行容器映像时,我只需添加一个参数-v="common-workspace/application-foo/tests/":/project
。我不知道如何在 Tekton 中进行此映射Task
。这是完整的Task
定义:
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: run-readyapi-tests
spec:
workspaces:
- name: source
steps:
- name: run-test-suite
image: image-registry.openshift-image-registry.svc:5000/cicd/ready-api-soapui-testrunner:3.20.0
volumeMounts:
- name: readyapi-project
mountPath: /project
env:
- name: LICENSE_SERVER
value: "a.b.c.d:1234"
- name: COMMAND_LINE
value: "/project/application-foo-readyapi-project.xml"
volumes:
- name: readyapi-project
[some binding mechanism here]
查看有关卷绑定的官方文档hostPath
(https://kubernetes.io/docs/concepts/storage/volumes/#hostpath),我希望我能做这样的事情,但这由于某种原因不起作用:
volumes:
- name: readyapi-project
hostPath:
path: common-workspace/application-foo/tests
那么如何绑定volumeMounts
到主机上的实际目录呢?有什么线索吗?
更新:
在 OpenShift 中查看 pod 时,它Task
有一个CreateContainerError
状态。在事件视图中,这是显示的错误消息:“错误:mkdir common-workspace/application-foo/tests 失败:mkdir common-workspace: operation not allowed”
我不明白为什么它会尝试创建 common-workspace 文件夹,因为它已经存在。我已经验证了使用emptyDir
卷类型时整个路径都存在,然后运行ls /workspace/source/common-workspace/application-foo/tests
. 这将打印出测试项目的 XML 文件。