k8s–基础–30.2–Tekton–通过Tekton实现CICD
1、需求说明
- 是k8s原生CI/CD系统
- 是开源的
2、操作
2.1、创建一个task任务
2.1.1、脚本
vi /root/tekton/task-test.yaml
内容
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: task-test
spec:
# 定义输入源,这里是git仓库
# Tekton 内置了一种 git 资源类型,它会自动将代码仓库 Clone 到 /workspace/$input_name 目录中,由于我们这里输入被命名成 repo,所以代码会被 Clone 到 /workspace/repo 目录下面
resources:
inputs:
- name: repo
type: git
# 定义执行运行测试命令的步骤
steps:
# 步骤名称
- name: run-test
image: golang:1.14-alpine
workingDir: /workspace/repo
# 这里我们直接在代码的根目录中运行 go test 命令,需要注意的是命令和参数需要分别定义。
command: ["go"]
args: ["test"]
2.1.2、执行脚本
# 执行
kubectl apply -f /root/tekton/task-test.yaml
# 查看
kubectl get Task
2.2、创建pipelineresource资源对象
- 刚刚我们定义完成了一个 Task 任务,但是该任务并不会立即执行,我们必须创建一个 TaskRun 引用它并提供所有必需输入的数据才行。
- 这里我们就需要将 git 代码库作为输入,我们必须先创建一个 PipelineResource 对象来定义输入信息。
2.2.1、脚本
vi /root/tekton/pipelineresource.yaml
内容
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: tekton-example
spec:
type: git
params:
- name: url
# 代码地址
value: https://gitee.com/DanShenGuiZu/jenkins-sample
- name: revision
value: master
2.2.2、执行脚本
# 执行
kubectl apply -f /root/tekton/pipelineresource.yaml
# 查看
kubectl get PipelineResource
2.3、创建一个TaskRun任务
2.3.1、脚本
vi /root/tekton/testrun.yaml
内容
apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
name: testrun
spec:
# 引用上面定义的Task和git仓库作为输入
taskRef:
name: task-test
resources:
inputs:
- name: repo
# 引用上面定义的PipelineResource资源对象
resourceRef:
name: tekton-example
2.3.2、执行脚本
# 执行
kubectl apply -f /root/tekton/testrun.yaml
# 查看
kubectl get TaskRun
kubectl get pods