使用 Tekton 在 Kubernetes 中编写您的第一个 CI/CD 管道
2023-03-14 22:31:39 时间
创建您自己的 CI/CD 管道
开始使用 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
任务来确保您拥有需要测试的代码的全新副本。
相关文章
- 让你的 Linux 远离黑客(二):另外三个建议
- 使用Docker镜像构建RPM包
- 《架构真经:互联网技术架构的设计》水平扩展
- 30万奖金!还带你奔赴加拿大相约KDD!?阿里聚安全算法挑战赛带你飞起!
- 如何在Linux的命令行中使用Evernote
- 《架构真经:互联网技术架构的设计》导读
- 如何在终端下以后台模式运行Linux程序
- Linux 命令行工具使用小贴士及技巧(一)
- 检测 Linux 内存使用情况的 free 命令的10个例子
- 在独立的 Root 和 Home 硬盘驱动器上安装 Ubuntu
- 算法开启的人工智能时代!阿里聚安全算法挑战赛公开报名!
- 如何更改 Linux 的 I/O 调度器
- Linux 有问必答:如何在Ubuntu或者Debian中启动后进入命令行
- Linux下如何过滤、分割以及合并 pcap 文件
- ELRepo - Enterprise Linux (RHEL、CentOS 及 SL)的社区仓库
- CentOS 7.x中正确设置时间与时钟服务器同步
- 《Spark 官方文档》Spark SQL, DataFrames 以及 Datasets 编程指南(四)
- 赢阿里巴巴集团安全部优先推荐名额!与阿里“神盾局”的大神面对面交流!
- Kgif:一个从活动窗口创建 GIF 的简单脚本
- 使用Docker、CoreOS、Mesos部署可扩展的Web应用