Перенести переменные ENV из одного шага Tekton Task в следующий?
Таким образом, Tekton Pipelines позволяет создавать отдельные задачи и объединять их в облачные конвейеры ci / cd. Это довольно круто. Но, как вы понимаете, вещи, которые вам кажутся простыми, довольно сложны. Например, я пытаюсь запустить исполнителя Kaniko как задачу, но этому исполнителю нужны определенные аргументы. Я могу жестко закодировать эти аргументы, но это делает задачу менее пригодной для повторного использования, поэтому я хотел бы, чтобы предыдущая задача просто считывала файл конфигурации из источника и вывода или устанавливала переменные env для последующей задачи. Не знаю, как это сделать. В случае с Канико это действительно сложно, потому что у вас нет оболочки или чего-то еще. Какие-либо предложения?
Вот пример задачи из их документации, которую я настроил, чтобы показать, что я пытаюсь сделать.
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"]
2 ответа
Я попытался добиться того же и нашел (хакерское) решение: вы можете использовать концепцию рабочих пространств и записать значение переменной в файл. Вы также можете использовать это для смешивания различных типов скриптов (в этом примере 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
Там нет простого способа сделать это сейчас, но вы можете использовать Params задачи и задачу-результаты.