Перенести переменные 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 задачи и задачу-результаты.

Другие вопросы по тегам