6

因此,Tekton Pipelines允许您创建单个任务并将它们连接到云原生 ci/cd 管道。它太酷了。但正如您可以想象的那样,您认为简单的事情非常棘手。例如,我正在尝试将 Kaniko 执行器作为任务运行,但该执行器需要特定的参数。我可以对这些参数进行硬编码,但这会降低任务的可重用性,因此我希望之前的任务可以简单地从源代码和输出中读取配置文件,或者为后续任务设置 env 变量。不知道该怎么做。在 Kaniko 的情况下,它真的很棘手,因为你没有任何外壳或任何东西。有什么建议么?

这是他们文档中的一个示例任务,我已经对其进行了调整以显示我正在尝试做的事情。

apiVersion: tekton.dev/v1alpha1
kind: Task
metadata:
  name: example-task-name
spec:
  inputs:
    resources:
      - name: workspace
        type: git
    params:
      - name: pathToDockerFile
        type: string
        description: The path to the dockerfile to build
        default: /workspace/workspace/Dockerfile
  outputs:
    resources:
      - name: builtImage
        type: image
  steps:
    - name: ubuntu-example
      image: ubuntu
      args: "export FOO=bar"
    - image: gcr.io/example-builders/build-example
      command: ["echo $FOO"]
4

2 回答 2

2

我试图达到同样的效果并找到了一个(hacky)解决方案:您可以利用工作区的概念并将变量值写入文件。您也可以使用它来混合不同类型的脚本(本示例中的 python 和 sh):

steps:
    - name: python-write-value
      image: python:3.7-alpine
      script: |
        #!/usr/bin/env python3
        value = "my_value_to_share"
        f = open("/workspace/value.txt","w+")
        f.write(value)
    - name: sh-read-value
      image: ubuntu
      script: |
        value=$(cat /workspace/value.txt)
        echo $value
于 2020-03-13T15:56:39.520 回答
1

目前没有简单的方法可以做到这一点,但您可以使用任务参数任务结果

于 2020-05-14T01:24:31.730 回答