3.3. 从 Git 仓库指定远程管道或任务
您可以使用 Git 解析器指定 Git 仓库中的远程管道或任务。存储库必须包含定义管道或任务的 YAML 文件。Git 解析器可以通过匿名方式或使用经过身份验证的 SCM API 来访问存储库。
3.3.1. 为匿名 Git 克隆配置 Git 解析器
如果要使用匿名 Git 克隆,您可以配置默认的 Git 修订、获取超时和默认存储库 URL,以便从 Git 存储库拉取远程管道和任务。
流程
要编辑
TektonConfig
自定义资源,请输入以下命令:$ oc edit TektonConfig config
在
TektonConfig
自定义资源中,编辑pipeline.git-resolver-config
spec:apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: pipeline: git-resolver-config: default-revision: main 1 fetch-timeout: 1m 2 default-url: https://github.com/tektoncd/catalog.git 3
3.3.2. 为经过身份验证的 SCM API 配置 Git 解析器
对于经过身份验证的 SCM API,您必须为经过身份验证的 Git 连接设置配置。
您可以使用 go-scm
库支持的 Git 存储库供应商。并非所有 go-scm
实现都已使用 Git 解析器测试,但以下供应商已知可以正常工作:
-
github.com
和 GitHub Enterprise -
gitlab.com
和自托管的 Gitlab - Gitea
- Bitbucket 服务器
- Bitbucket 云
- 您只能在集群中使用经过身份验证的 SCM API 配置一个 Git 连接。此连接可供集群的所有用户使用。集群的所有用户都可以使用您为连接配置的安全令牌访问存储库。
- 如果将 Git 解析器配置为使用经过身份验证的 SCM API,您还可以使用匿名 Git 克隆引用来检索管道和任务。
流程
要编辑
TektonConfig
自定义资源,请输入以下命令:$ oc edit TektonConfig config
在
TektonConfig
自定义资源中,编辑pipeline.git-resolver-config
spec:apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: pipeline: git-resolver-config: default-revision: main 1 fetch-timeout: 1m 2 scm-type: github 3 server-url: api.internal-github.com 4 api-token-secret-name: github-auth-secret 5 api-token-secret-key: github-auth-key 6 api-token-secret-namespace: github-auth-namespace 7 default-org: tektoncd 8
- 1
- 如果未指定,使用默认 Git 修订。
- 2
- 单个 Git 克隆解析可能需要的最大时间,如
1m
、2s
、700ms
。Red Hat OpenShift Pipelines 还在所有解析请求中强制实施全局最大超时时间为 1 分钟。 - 3
- SCM 提供程序类型。
- 4
- 用于经过身份验证的 SCM API 的基本 URL。如果您使用
github.com
、gitlab.com
或 BitBucket Cloud,则不需要此设置。 - 5
- 包含 SCM 提供程序 API 令牌的 secret 名称。
- 6
- 包含令牌的令牌 secret 中的密钥。
- 7
- 包含令牌 secret 的命名空间(如果不是
default
)。 - 8
- 可选:使用经过身份验证的 API 时存储库的默认机构。如果您没有在解析器参数中指定机构,则使用此机构。
使用经过身份验证的 SCM API 需要 scm-type
,api-token-secret-name
, 和 api-token-secret-key
设置。
3.3.3. 使用 Git 解析器指定远程管道或任务
在创建管道运行时,您可以从 Git 仓库指定远程管道。在创建管道或任务运行时,您可以从 Git 仓库指定远程任务。
先决条件
- 如果要使用经过身份验证的 SCM API,您必须为 Git 解析器配置经过身份验证的 Git 连接。
流程
要从 Git 仓库指定远程管道或任务,请在
pipelineRef
或taskRef
spec 中使用以下引用格式:# ... resolver: git params: - name: url value: <git_repository_url> - name: revision value: <branch_name> - name: pathInRepo value: <path_in_repository> # ...
表 3.3. Git 解析器支持的参数 参数 描述 示例值 url
使用匿名克隆时存储库的 URL。
https://github.com/tektoncd/catalog.git
repo
使用经过身份验证的 SCM API 时的存储库名称。
test-infra
org
使用经过身份验证的 SCM API 时存储库的机构。
tektoncd
revision
存储库中的 Git 修订。您可以指定分支名称、标签名称或提交 SHA 哈希。
aeb957601cf41c012be462827053a21a420befca
main
v0.38.2
pathInRepo
存储库中的 YAML 文件的路径名称。
task/golang-build/0.3/golang-build.yaml
注意要匿名克隆和获取存储库,请使用
url
参数。要使用经过身份验证的 SCM API,请使用repo
参数。不要同时指定url
参数和repo
参数。如果管道或任务需要额外的参数,在管道、管道运行或任务运行规格的
params
部分中指定这些参数的值。pipelineRef
或taskRef
规格的params
部分必须包含解析器支持的参数。
以下示例管道运行引用 Git 存储库中的远程管道:
apiVersion: tekton.dev/v1 kind: PipelineRun metadata: name: git-pipeline-reference-demo spec: pipelineRef: resolver: git params: - name: url value: https://github.com/tektoncd/catalog.git - name: revision value: main - name: pathInRepo value: pipeline/simple/0.1/simple.yaml params: - name: name value: "testPipelineRun" - name: sample-pipeline-parameter value: test
以下示例管道引用 Git 存储库中的远程任务:
apiVersion: tekton.dev/v1 kind: Pipeline metadata: name: pipeline-with-git-task-reference-demo spec: tasks: - name: "git-task-reference-demo" taskRef: resolver: git params: - name: url value: https://github.com/tektoncd/catalog.git - name: revision value: main - name: pathInRepo value: task/git-clone/0.6/git-clone.yaml params: - name: sample-task-parameter value: test
以下示例任务运行引用 Git 存储库中的远程任务:
apiVersion: tekton.dev/v1 kind: TaskRun metadata: name: git-task-reference-demo spec: taskRef: resolver: git params: - name: url value: https://github.com/tektoncd/catalog.git - name: revision value: main - name: pathInRepo value: task/git-clone/0.6/git-clone.yaml params: - name: sample-task-parameter value: test