使用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..path)”,这样可以避免硬编码
◆注意: $(results..path)”会被替换为文件路径,获取结果值需要获取该文件中保存的内容
?在Task中引用Results时使用的变量
? results..path
? results[''].path 或 results[""].path
?在Pipeline中引用Results时使用的变量
? tasks..results.
? tasks..results[''] 或 tasks..results[""]
使用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