快速开始

本文档帮助新用户快速了解并使用 Tekton Pipelines 创建简单的 CI/CD 工作流。

简介

Tekton 是一个开源的云原生 CI/CD(持续集成和持续交付/部署)解决方案。它提供 Kubernetes 原生构建块,用于创建容器化、标准化且可移植的 CI/CD Pipeline。

使用场景

  • 创建自动化的构建、测试和部署工作流
  • 以 Kubernetes 原生方式运行 CI/CD Pipeline
  • 在没有特权访问权限的情况下构建容器镜像
  • 在多个云提供商之间实施标准化的部署流程
  • 为 CI/CD 系统创建可复用组件

预计阅读时间

15-20 分钟

先决条件

  • 一个 Kubernetes 集群(可以使用 minikube 进行本地测试)
  • 已安装在集群上的 Tekton Pipelines
  • 已安装并配置为访问集群的 kubectl
  • 已安装 Tekton CLI(tkn),以便更轻松地与 Tekton 资源交互

流程概览

步骤操作描述
1创建一个“Hello World”Task创建一个输出问候消息的基本 Task
2创建一个“Goodbye”Task创建第二个可接受参数的 Task
3创建一个 Pipeline创建一个按顺序组合这两个 Task 的 Pipeline
4运行 Pipeline执行 Pipeline 并查看结果
5清理删除已创建的资源

分步说明

步骤 1:创建“Hello World”Task

Task 是 Tekton Pipeline 的基本构建块。它由一系列在容器中按顺序运行的步骤组成。

  1. 创建一个名为 hello-task.yaml 的文件,内容如下:

    apiVersion: tekton.dev/v1
    kind: Task
    metadata:
      name: hello
    spec:
      steps:
        - name: echo
          image: ubuntu
          command:
            - echo
          args:
            - "Hello World!"
    TIP

    请将 ubuntu 镜像替换为实际可访问的镜像,以下同样如此。

  2. 将 Task 应用到集群:

    kubectl apply -f hello-task.yaml
  3. TaskRun 对象会实例化并执行此 Task。创建另一个名为 hello-world-run.yaml 的文件,内容如下:

    apiVersion: tekton.dev/v1
    kind: TaskRun
    metadata:
      name: hello-task-run
    spec:
      taskRef:
        name: hello
  4. 将 TaskRun 应用到集群:

    kubectl apply -f hello-world-run.yaml
  5. 监控 TaskRun 执行情况:

    kubectl get taskrun hello-task-run

    你应该会看到类似如下的输出:

    NAME            SUCCEEDED   REASON      STARTTIME   COMPLETIONTIME
    hello-task-run  True        Succeeded   1m         2m
  6. 查看日志:

    kubectl logs --selector=tekton.dev/taskRun=hello-task-run

    你应该会看到类似如下的输出:

    Hello World!

步骤 2:创建带参数的“Goodbye”Task

现在,我们创建第二个可接受参数的 Task,使其更加灵活。

  1. 创建一个名为 goodbye-task.yaml 的文件,内容如下:

    apiVersion: tekton.dev/v1
    kind: Task
    metadata:
      name: goodbye
    spec:
      params:
        - name: username
          type: string
          description: The username to say goodbye to
          default: "World"
      steps:
        - name: goodbye
          image: ubuntu
          command:
            - echo
          args:
            - "Goodbye $(params.username)!"
  2. 将 Task 应用到集群:

    kubectl apply -f goodbye-task.yaml

步骤 3:创建 Pipeline

Pipeline 定义了一系列按特定执行顺序排列的 Task,作为 CI/CD 工作流的一部分。

  1. 创建一个名为 hello-goodbye-pipeline.yaml 的文件,内容如下:

    apiVersion: tekton.dev/v1
    kind: Pipeline
    metadata:
      name: hello-goodbye
    spec:
      params:
        - name: username
          type: string
          description: The username to say goodbye to
          default: "World"
      tasks:
        - name: hello
          taskRef:
            name: hello
        - name: goodbye
          runAfter:
            - hello
          taskRef:
            name: goodbye
          params:
            - name: username
              value: "$(params.username)"

    此 Pipeline:

    • 定义一个名为 username 的参数
    • 包含两个 Task:hello 和 goodbye
    • 指定在 hello 完成后运行 goodbye
    • 将 Pipeline 参数传递给 goodbye Task
  2. 将 Pipeline 应用到集群:

    kubectl apply -f hello-goodbye-pipeline.yaml

步骤 4:运行 Pipeline

PipelineRun 用于执行 Pipeline 并提供所需的参数。

  1. 创建一个名为 hello-goodbye-pipeline-run.yaml 的文件,内容如下:

    apiVersion: tekton.dev/v1
    kind: PipelineRun
    metadata:
      name: hello-goodbye-run
    spec:
      pipelineRef:
        name: hello-goodbye
      params:
        - name: username
          value: "Tekton"
  2. 将 PipelineRun 应用到集群以启动 Pipeline:

    kubectl apply -f hello-goodbye-pipeline-run.yaml
  3. 监控 Pipeline 执行情况:

    tkn pipelinerun logs hello-goodbye-run -f

    你应该会看到类似如下的输出:

    [hello : echo] Hello World!
    [goodbye : goodbye] Goodbye Tekton!

步骤 5:清理

要删除本教程中创建的资源:

kubectl delete -f hello-task.yaml
kubectl delete -f hello-task-run.yaml
kubectl delete -f goodbye-task.yaml
kubectl delete -f hello-goodbye-pipeline.yaml
kubectl delete -f hello-goodbye-pipeline-run.yaml

高级配置

熟悉基本的 Task 和 Pipeline 后,你可以利用高级功能来增强工作流:

  • 如何配置动态表单:为基于 UI 的 Pipeline 和 Task 操作配置动态表单,无需编写前端代码即可启用下拉菜单、验证规则和动态数据加载。

  • 在 Overview 选项卡中输出 Markdown(PipelineRuns 和 TaskRuns):你可以配置 TaskRuns 和 PipelineRuns,以便在 Overview 选项卡中显示格式化的 Markdown 内容,从而更轻松地直接在 UI 中查看结果、摘要或报告。

  • 如需了解更多 Pipeline 的配置和使用信息,请参阅如何。

商标和归属

Tekton™ 是 The Linux Foundation 的商标。

Red Hat® 和 OpenShift® 是 Red Hat, Inc. 在美国和其他国家/地区的注册商标。

Alauda 是独立供应商。本产品与 The Linux Foundation 或 Red Hat, Inc. 没有关联,也未获得其认可或赞助。所有商标均归其各自所有者所有,本文使用这些商标仅用于识别目的。