1

我们想使用来自 Tekton Hub的官方 Tekton buildpacks 任务来使用 Cloud Native Buildpacks 运行我们的构建。Tekton的buildpacks 文档告诉我们从 Tekton Hub安装buildpacks&任务、 create 、和Tektongit-cloneSecretServiceAccountPersistentVolumeClaimPipeline

由于配置是参数化的,我们不想使用一个巨大的 kubectl 命令来启动我们的 Tekton 管道,而是PipelineRun使用一个单独的pipeline-run.ymlYAML 文件(也如文档中所述)来配置,其中包含对ServiceAccount、工作区、图像名称等的引用上:

apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
  name: buildpacks-test-pipeline-run
spec:
  serviceAccountName: buildpacks-service-account # Only needed if you set up authorization
  pipelineRef:
    name: buildpacks-test-pipeline
  workspaces:
    - name: source-workspace
      subPath: source
      persistentVolumeClaim:
        claimName: buildpacks-source-pvc
    - name: cache-workspace
      subPath: cache
      persistentVolumeClaim:
        claimName: buildpacks-source-pvc
  params:
    - name: image
      value: <REGISTRY/IMAGE NAME, eg gcr.io/test/image > # This defines the name of output image

现在使用 . 运行一次 Tekton 管道没有问题kubectl apply -f pipeline-run.yml。但是我们如何重新启动或重用这个基于 YAML 的配置来运行所有其他管道呢?

4

3 回答 3

2

tkn cli有开关 --use-pipelinerun 到 command tkn pipeline start,该命令的作用是重用该 pipelinerun 中的参数/工作区并创建一个新的,因此有效地“重新启动”它。

因此,要“重新启动”属于管道 p1 的 pipelinerun pr1,您将执行以下操作:

tkn pipeline start p1 --use-pipelinerun pr1

也许我们应该有一个更简单的命名命令,我前段时间开始讨论,随时提供反馈:

https://github.com/tektoncd/cli/issues/1091

于 2021-11-09T06:44:52.337 回答
2

在 Tekton GitHub 项目中有一些关于该主题的讨论 - 请参阅tektoncd/pipeline/issues/664tektoncd/pipeline/issues/685。由于 Tekton 在很大程度上基于 Kubernetes,所有 Tekton 对象都是 Kubernetes CRD——实际上是不可变的因此,它旨在无法重新运行已经运行的PipelineRun.

但正如tektoncd/pipeline/issues/685中所讨论的,我们可以像这样简单地使用该字段的generateName变量:metadata

apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
  generateName: buildpacks-test-pipeline-run-
spec:
  serviceAccountName: buildpacks-service-account # Only needed if you set up authorization
  pipelineRef:
    name: buildpacks-test-pipeline
  workspaces:
    - name: source-workspace
      subPath: source
      persistentVolumeClaim:
        claimName: buildpacks-source-pvc
    - name: cache-workspace
      subPath: cache
      persistentVolumeClaim:
        claimName: buildpacks-source-pvc
  params:
    - name: image
      value: <REGISTRY/IMAGE NAME, eg gcr.io/test/image > # This defines the name of output image

运行kubectl create -f pipeline-run.yml现在将多次运行并且有点“重新启动”我们的管道,同时创建一个新PipelineRun对象,就像buildpacks-test-pipeline-run-dxcq6每次发出命令一样。

请记住,PipelineRun偶尔删除旧对象。

于 2021-11-08T07:47:58.793 回答
1

您无法重新启动pipelinerun.
由于在tekton中,apipelinerun是a的一次执行pipeline(视为模板),所以它应该不能重新启动,另一个kubectl applyforpipelinerun是另一个执行......

于 2021-11-08T11:36:18.307 回答