编写 Catalog 资源

artifacthub-shim 会从文件系统和 Git catalog 源中索引 Tekton 资源。一个 catalog 可以包含 TaskPipelineStepAction 资源。每个资源按目录进行版本管理,并通过 DevOps Hub UI、兼容 Artifact Hub 的 API,以及 Tekton resolver: hub 进行公开。

目录布局

Catalog 仓库请使用以下布局:

catalog-repo/
├── task/
│   └── run-script/
│       └── 0.1/
│           ├── README.md
│           └── run-script.yaml
├── pipeline/
│   └── build-deploy/
│       └── 0.1/
│           ├── README.md
│           └── build-deploy.yaml
├── stepaction/
│   └── echo-message/
│       └── 0.1/
│           ├── README.md
│           └── echo-message.yaml
└── config/
    ├── overview_template/
    │   └── run-script-overview-template.yaml
    └── tool_image/
        └── run-script-custom-image.yaml

规则:

  • 顶级目录为小写的资源类型:taskpipelinestepaction
  • 版本目录必须包含一个以资源命名的 YAML manifest。
  • metadata.name 必须与包目录名称一致。
  • metadata.labels["app.kubernetes.io/version"] 应与版本目录一致。
  • 建议提供 README.md,因为它会显示在 UI 详情页中。
  • 可选的资源目录(例如 config/)可以包含 ConfigMaps,这些 ConfigMaps 会通过 extraResources 进行同步,而不会被索引为 catalog 包。可将其用于支持性资源,例如概览模板和工具镜像选择器选项。请参阅 配置自定义 Git 仓库使用模板自定义 Task 概览向选择器添加自定义 Task 镜像

必需元数据

每个被索引的资源都应包含描述和版本元数据:

apiVersion: tekton.dev/v1
kind: Task
metadata:
  name: echo-hello
  labels:
    app.kubernetes.io/version: "0.1"
  annotations:
    tekton.dev/pipelines.minVersion: "0.56.0"
    tekton.dev/categories: "CLI"
    tekton.dev/tags: "echo,demo"
    tekton.dev/displayName: "Echo Hello"
    tekton.dev/platforms: "linux/amd64,linux/arm64"
spec:
  description: Simple demonstration Task that echoes a message.
  params:
    - name: message
      description: Message to echo.
      default: "Hello World"
  steps:
    - name: echo
      image: alpine:3.21
      script: |
        #!/usr/bin/env sh
        set -eu
        echo "$(params.message)"

请不要在新的 catalog 内容中使用 ClusterTask。Tekton Pipelines v1 使用命名空间级的 Task 资源。

Resolver 引用

通过 artifacthub-shim 解析资源时,请使用 type: artifact

apiVersion: tekton.dev/v1
kind: TaskRun
metadata:
  name: echo-hello-run
spec:
  taskRef:
    resolver: hub
    params:
      - name: type
        value: artifact
      - name: catalog
        value: catalog
      - name: kind
        value: task
      - name: name
        value: echo-hello
      - name: version
        value: "0.1"

内置 catalog 名称:

资源类型内置 catalog
taskcatalog
pipelinecatalog-pipelines
stepactioncatalog-stepactions

只有当打包的 catalog 包含 stepaction/ 目录时,才会注册内置的 StepAction catalog。

有关完整的 resolver 语法,请参阅 使用 Hub Resolver 消费资源

验证清单

  • 路径符合 <kind>/<name>/<version>/<name>.yaml
  • manifest 名称与目录名称一致。
  • 版本标签与版本目录一致。
  • spec.description 已提供且内容有用。
  • 参数、workspaces 和 results 都有描述。
  • 示例和 README 示例使用 type: artifact
  • 必须同步到集群的其他 ConfigMaps 具有 artifacthub-shim.alauda.io/import: "true"