开始使用 Tekton 的最简单方法是编写您自己的简单管道。如果您每天都使用 Kubernetes,您可能会对 YAML 感到满意,这正是 Tekton 管道的定义方式。这是一个克隆代码存储库的简单管道示例。
首先,创建一个名为task.yam
l的文件 并在您喜欢的文本编辑器中打开它。该文件定义了您要执行的步骤。在这个例子中,这是克隆一个存储库,所以我命名了步骤克隆。该文件设置了一些环境变量,然后提供了一个简单的 shell 脚本来执行克隆。
接下来是任务。您可以将步骤视为由任务调用的函数,任务设置步骤所需的参数和工作区。
apiVersion : tekton.dev/v1beta1
kind : Task
metadata :
name : git-clone
spec :
workspaces :
- name : output
description : git repo 将被克隆到支持此工作区的卷上。
params :
- name : url
description :要从中克隆的存储库 URL。
类型:字符串
-名称:修订
描述:要结帐的修订。(分支、标签、sha、ref 等... )
类型:字符串
默认值:“”
步骤:
-名称:克隆
图像:“gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/git-init :v0.21.0"
ENV:
-名称: PARAM_URL
值: $ ( params.url )
-名称: PARAM_REVISION
值: $ ( params.revision )
-名称:WORKSPACE_OUTPUT_PATH
值: $ ( workspaces.output.path )
脚本:|
#!/usr/bin/env sh
set -eu
CHECKOUT_DIR="${WORKSPACE_OUTPUT_PATH}"
/ko-app/git-init \
-url="${PARAM_URL}" \
-revision="${PARAM_REVISION}" \
- path="${CHECKOUT_DIR}"
cd "${CHECKOUT_DIR}"
EXIT_CODE="$?"
if [ "${EXIT_CODE}" != 0 ] ; then
exit "${EXIT_CODE}"
fi
# 通过阅读自述文件验证克隆是否成功。
猫 ${CHECKOUT_DIR}/README.
创建名为 的第二个文件 pipeline.yaml
,并在您喜欢的文本编辑器中打开它。该文件通过设置重要参数来定义管道,例如可以运行和处理任务的工作区。
apiVersion : tekton.dev/v1beta1
kind :管道
元数据:
名称: cat-branch-readme
规范:
参数:
-名称: repo-url
类型:字符串
描述:要从中克隆的 git 存储库 URL。
- 名称:分支名称
类型:字符串
描述:要克隆的 git 分支。
工作区:
-名称:共享数据
描述:|
这个工作区将接收克隆的 git repo 并传递
给下一个 Task 以读取 repo 的 README.md 文件。
任务:
-名称: fetch-repo
taskRef:
名称: git-clone
工作区:
-名称:输出
工作区:共享数据
参数:
-名称: url
值: $ ( params.repo-url )
-名称:修订
值:$ ( params.branch-name )
最后,创建一个名为的文件 pipelinerun.yaml
并在您喜欢的文本编辑器中打开它。该文件实际上运行管道。它调用管道中定义的参数(反过来,调用由任务文件定义的任务。)
apiVersion : tekton.dev/v1beta1
样: PipelineRun
元数据:
名称:混帐克隆检查中取一个分支
规范:
pipelineRef:
名称:猫分支自述
工作区:
-名称:共享数据
volumeClaimTemplate:
规格:
accessModes :
- ReadWriteOnce
资源:
请求:
存储: 1Gi
参数:
- 名称: repo-url
值: https : //github.com/tektoncd/pipeline.git
- 名称:分支名称
值: release-v0.12.x
在单独的文件中构建您的工作的优点是该 git-clone
任务可重用于多个管道。
例如,假设您要对管道项目进行端到端测试。您可以使用该 git-clone
任务来确保您拥有需要测试的代码的全新副本。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。