0

我正在尝试实现一个基本的 Tekton CI 管道。管道所做的只是 1) 获取源代码 2) 使用新版本构建映像并将其推送到映像注册表。

映像版本由 Tekton Step 生成。映像是由另一个使用 Kaniko 的 Tekton 步骤构建的,如此处所述

我知道使用工作区在 Tekton 步骤之间传递变量。这意味着我可以将版本写入工作区中的文件。但无法找出从以下 Kaniko 构建步骤中的文件中读取此版本的方法:

  steps:
    - name: build-and-push
      image: gcr.io/kaniko-project/executor:latest
      # specifying DOCKER_CONFIG is required to allow kaniko to detect docker credential
      env:
        - name: "DOCKER_CONFIG"
          value: "/tekton/home/.docker/"
      command:
        - /kaniko/executor
      args:
        - --dockerfile=$(params.pathToDockerFile)
        - --destination=$(resources.outputs.builtImage.url):<IMAGE-VERSION-NEEDED-HERE>
        - --context=$(params.pathToContext)
        - --build-arg=BASE=alpine:3

应该有一个共同的模式来解决这个问题,但我不确定我是否在 Tekton 文档中查看了正确的位置。

任何人都可以提供一些指示吗?

4

2 回答 2

1

这是为了确认我通过按照@Jonas 的建议重新设计任务步骤来解决问题。

Tekton 任务可以具有可以在其他任务中引用的输出。在撰写本文时,Tekton 步骤似乎没有此功能。

有关更多详细信息,请参阅上面@Jonas 评论中的链接。

于 2021-10-21T20:03:03.677 回答
0

共享中的所有步骤Task都相同Pod,因此可以访问作为emptyDir卷实现的共享工作空间:

Volumes:
  tekton-internal-workspace:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:
    SizeLimit:  <unset>

在步骤之间共享数据的一种常见方法是在步骤中创建一个文件/workspace并在下一步中读取它。

或者,正如@Jonas 所建议的那样,如果您使用不同的,您可以在第一个Tasks中写入结果并将其输入到定义Task中第二个的参数中。TaskPipeline

以这种方式使用结果会隐式地在两者之间创建依赖关系Tasks,因此 Tekton 控制器不会安排第二个Task,直到第一个成功完成并且结果可用。

于 2021-11-08T10:03:30.410 回答