将ENV变量从一个Tekton任务步骤传递到下一个步骤



因此,Tekton Pipelines允许您创建单独的任务,并将它们连接到云原生ci/cd管道中。很酷。但正如你所能想象的,所以你认为很容易的事情,都很棘手。例如,我试图将Kaniko执行器作为一项任务运行,但该执行器需要特定的参数。我可以对这些args进行硬编码,但这会降低任务的可重用性,所以我希望前一个任务只需从源代码中读取配置文件并输出,或者为下一个任务设置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"]

我试图实现同样的目标,并找到了一个(破解的(解决方案:您可以利用工作空间的概念,并将变量值写入文件。您也可以使用它来混合不同类型的脚本(本例中为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

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

相关内容

最新更新