首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Tekton目录绑定到VolumeMount

将Tekton目录绑定到VolumeMount
EN

Stack Overflow用户
提问于 2022-01-13 14:17:42
回答 1查看 881关注 0票数 0

我们有一个Tekton管道,我们想从它运行我们的ReadyAPI测试套件。我们使用的是SmartBear (https://hub.docker.com/r/smartbear/ready-api-soapui-testrunner)的官方图像。

映像要求将容器中的/project文件夹绑定到ReadyAPI测试项目所在的主机目录。在我们的例子中,我们的测试项目位于Tekton Workspace目录common-workspace/application-foo/tests/application-foo-readyapi-project.xml中。

当在本地(使用docker run)运行容器映像时,我只添加一个参数-v="common-workspace/application-foo/tests/":/project。我不知道如何在Tekton Task中完成这个映射。下面是整个Task定义:

代码语言:javascript
复制
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)的卷绑定的官方文档,我希望我可以这样做,但由于某些原因,这是行不通的:

代码语言:javascript
复制
  volumes:
    - name: readyapi-project
      hostPath:
        path: common-workspace/application-foo/tests

那么如何将volumeMounts绑定到主机上的实际目录呢?有什么线索吗?

更新:当查看OpenShift中的豆荚时,这个Task具有CreateContainerError状态。在Events视图中,这是显示的错误消息:“错误: mkdir公共工作区/应用程序失败-foo/test: mkdir公共工作区:操作不允许”。

我不明白它为什么要创建公共工作区文件夹,因为它已经存在了。当使用emptyDir卷类型,然后运行ls /workspace/source/common-workspace/application-foo/tests时,我已经验证了整个路径是否存在。这将打印出测试项目的XML文件。

EN

回答 1

Stack Overflow用户

发布于 2022-01-16 09:34:27

试试这个:

代码语言:javascript
复制
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: run-readyapi-tests
spec:
  workspaces:
    - name: source
      mountPath: /project
  steps:
    - name: run-test-suite
      image: image-registry.openshift-image-registry.svc:5000/cicd/ready-api-soapui-testrunner:3.20.0
      env:
        - name: LICENSE_SERVER
          value: "a.b.c.d:1234"
        - name: COMMAND_LINE
          value: "/project/application-foo-readyapi-project.xml"

您可以为任务工作区设置任意的mountPaths。默认情况是将它们挂载到/workspace/${name}中。

您不需要volumeMounts从您的初始帖子。如果您在某个地方定义了一些volumes,那么您可以使用它,但是由于您只在这里使用workspaces:它们将自动装入任务中的所有步骤容器中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70698108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档