3.6. 使用经过身份验证的 API 指定远程管道或任务
您可以使用 Git 解析器从 Git 存储库指定远程管道或任务。存储库必须包含定义管道或任务的 YAML 文件。您可以使用经过身份验证的 API 安全地访问存储库,它支持用户身份验证。
3.6.1. 为经过身份验证的 API 配置 Git 解析器 复制链接链接已复制到粘贴板!
对于经过身份验证的 Source Control Management (SCM) API,您必须为经过身份验证的 Git 连接设置配置。
您可以使用 go-scm
库支持的 Git 存储库供应商。并非所有 go-scm
实现都已使用 Git 解析器测试,但以下供应商已知可以正常工作:
-
github.com
和 GitHub Enterprise -
gitlab.com
和自托管的 Gitlab - Gitea
- Bitbucket 服务器
- Bitbucket 云
- 您可以使用经过身份验证的 SCM API 配置 Git 连接。您可以提供一个安全令牌,使集群中的所有用户能够访问一个存储库。另外,您可以为特定管道或任务指定不同的 SCM 供应商和令牌。
- 如果将 Git 解析器配置为使用经过身份验证的 SCM API,您还可以使用匿名 Git 克隆引用来检索管道和任务。
流程
要编辑
TektonConfig
自定义资源,请输入以下命令:oc edit TektonConfig config
$ oc edit TektonConfig config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
TektonConfig
自定义资源中,编辑pipeline.git-resolver-config
spec:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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.6.2. 使用带有经过身份验证的 SCM API 的 Git 解析器指定远程管道或任务 复制链接链接已复制到粘贴板!
在创建管道运行时,您可以使用经过身份验证的 SCM API 从 Git 存储库指定远程管道。在创建管道或任务运行时,您可以从 Git 仓库指定远程任务。
先决条件
- 如果要使用经过身份验证的 SCM API,您必须为 Git 解析器配置经过身份验证的 Git 连接。
流程
要从 Git 仓库指定远程管道或任务,请在
pipelineRef
或taskRef
spec 中使用以下引用格式:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Expand 表 3.49. Git 解析器支持的参数 参数 描述 示例值 org
使用经过身份验证的 SCM API 时存储库的机构。
tektoncd
repo
使用经过身份验证的 SCM API 时的存储库名称。
test-infra
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 存储库中的远程管道:
以下示例管道引用 Git 存储库中的远程任务:
以下示例任务运行引用 Git 存储库中的远程任务:
在创建管道运行时,您可以使用经过身份验证的 SCM API 从 Git 存储库指定远程管道。在创建管道或任务运行时,您可以从 Git 仓库指定远程任务。您可以覆盖特定管道运行或任务中的初始配置设置,以根据不同的用例自定义行为。
以下示例任务运行引用 Git 存储库中的远程任务来覆盖之前的解析器配置:
参数 | 描述 | 示例值 |
---|---|---|
| 仓库的组织。 |
|
repo | 存储库名称。 | catalog |
revision | 存储库中的 Git 修订。您可以指定分支名称、标签名称或提交 SHA 哈希。 | main |
pathInRepo | 存储库中的 YAML 文件的路径名称。 | task/git-clone/0.6/git-clone.yaml |
token | 用于身份验证的 secret 名称。 | my-secret-token |
tokenKey | 令牌的密钥名称。 | token |
scmType | SCM (源控制管理)系统的类型。 | github |
serverURL | 托管存储库的服务器的 URL。 |
|