使用Results进行数据传递

Results简介
  ◼ 在Pipeline的Task之间使用同一个共享的Workspace可以完成数据共享,但对于简单的字符串数据的传递,则可以使用Results API完成
  ◼ Results用于让Task及其Step保存执行结果,并可在同一Pipeline中的后续Task中调用该结果
在Task中使用Results
  ◼ 以列表形式定义在spec.results字段中
  ◼ Task将会为每个results条目自动创建一个文件以进行保存,这些文件统一放置于/tektons/results目录中
  ◼ 每个results条目的相关值(value)需要在Step中进行生成并保存,且Task不会对相关数据进行任何多余的操作
  ◼ 在Step代码中引用results条目的便捷格式为“$(results.<resultName>.path)”,这样可以避免硬编码
    ◆注意: $(results.<resultName>.path)”会被替换为文件路径,获取结果值需要获取该文件中保存的内容
在Task中引用Results时使用的变量
  ◼ results.<resultName>.path
  ◼ results['<resultName>'].path 或 results["<resultName>"].path
在Pipeline中引用Results时使用的变量
  ◼ tasks.<taskName>.results.<resultName>
  ◼ tasks.<taskName>.results['<resultName>'] 或 tasks.<taskName>.results["<resultName>"]
 
使用Results 进行数据传递示例
在一个Task中定义了两个Step
  ◼ 前一个Step生成日期时间
  ◼ 后一个Step结果应用程序版本号及日期时间生成build ID
  ◼ build ID将作为后续Task中的镜像文件标签使用
 
root@master01:~/tekton-and-argocd-in-practise/03-tekton-advanced# cat 07-results-demo.yaml 
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: generate-buildid
spec:
  params:
    - name: version
      description: The version of the application
      type: string
      default: "v0.9"
  results: #定义两个results
    - name: datetime
      description: The current date and time
    - name: buildId
      description: The build ID
  steps:
    - name: generate-datetime
      image: ikubernetes/admin-box:v1.2
      script: |
        #!/usr/bin/env bash
        datetime=`date +%Y%m%d-%H%M%S`
        echo -n ${datetime} | tee $(results.datetime.path)  #时间重定向datetime
    - name: generate-buildid
      image: ikubernetes/admin-box:v1.2
      script: |
        #!/usr/bin/env bash
        buildDatetime=`cat $(results.datetime.path)` #再次重定向到buildDatetime
        buildId=$(params.version)-${buildDatetime}   #版本加时间result
        echo -n ${buildId} | tee $(results.buildId.path)
root@master01:~/tekton-and-argocd-in-practise/03-tekton-advanced# kubectl apply -f 07-results-demo.yaml 
task.tekton.dev/generate-buildid created
root@master01:~/tekton-and-argocd-in-practise/03-tekton-advanced# tkn task start generate-buildid --showlog

 

 

root@master01:~/tekton-and-argocd-in-practise/03-tekton-advanced# tkn task start generate-buildid --showlog
? Value for param `version` of type `string`? (Default is `v0.9`) v0.9
TaskRun started: generate-buildid-run-4klf6
Waiting for logs to be available...
[generate-datetime] 202203-134336

[generate-buildid] v0.9-202203-134336

 

posted @ 2022-03-23 20:38  gg888666  阅读(292)  评论(0编辑  收藏  举报