3.9. OpenShift Pipelines 提供的步骤操作定义
OpenShift Pipelines 提供您可以在任务中使用的标准 StepAction 定义。使用集群解析器引用这些定义。
git-clone
git-clone 步骤操作使用 Git 在工作区上初始化并克隆远程存储库。您可以使用这一步操作来定义在构建或以其他方式处理此源代码的管道开始时克隆存储库的任务。
在任务中使用 git-clone 步骤操作的示例
apiVersion: tekton.dev/v1
kind: Task
metadata:
name: clone-repo-anon
spec:
# ...
steps:
- name: clone-repo-step
ref:
resolver: cluster
params:
- name: name
value: git-clone
- name: namespace
value: openshift-pipelines
- name: kind
value: stepaction
params:
- name: URL
value: $(params.url)
- name: OUTPUT_PATH
value: $(workspaces.output.path)
| 参数 | 描述 | 类型 | 默认值 |
|---|---|---|---|
|
|
获取的 Git 存储库的目录。克隆的存储库数据放置在目录的根目录中,或放在 |
| |
|
|
根据需要,带有私钥、 |
| |
|
|
包含 |
| |
|
| 包含 CA 证书的工作区。如果您提供此工作区,Git 将使用这些证书在与使用 HTTPS 与远程存储库交互时验证对等证书。 |
| |
|
|
|
|
|
|
| HTTP 代理服务器(非 TLS 请求)。 |
| |
|
| HTTPS 代理服务器(TLS 请求)。 |
| |
|
| 选择不使用代理 HTTP/HTTPS 请求。 |
| |
|
|
任务放置 Git 存储库 |
| |
|
| pod 中 Git 用户主目录的绝对路径。 |
|
|
|
| 在运行 Git 操作前,删除默认工作区的内容(如果存在)。 |
|
|
|
| 记录已执行的命令。 |
|
|
|
|
全局 |
|
|
|
| Git 存储库 URL。 |
| |
|
| 要签出的修订版本,如分支或标签。 |
|
|
|
|
任务在签出修订版本前获取的存储库的 |
| |
|
| 初始化并获取 Git 子模块。 |
|
|
|
| 要抓取的提交数,"允许克隆"是一个提交。 |
|
|
|
| 执行"稀疏签出"的目录模式列表,用逗号分开。 |
|
| 结果 | 类型 | 描述 |
|---|---|---|
|
|
| 位于克隆的 Git 存储库中的当前分支 HEAD 的 SHA 摘要。 |
|
|
| 克隆的存储库的 URL。 |
|
|
| 克隆的 Git 存储库中的当前分支的 HEAD 的 epoch 时间戳。 |
cache-upload 和 cache-fetch
使用 cache-upload 和 cache-fetch 步骤操作只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
使用 cache-upload 和 cache-fetch 步骤操作来保留构建流程保留其依赖项的缓存目录,将其存储在 Amazon Simple Storage Service (S3)存储桶、Google Cloud Services (GCS)存储桶或 Open Container Initiative (OCI)存储库中。
当您使用 cache-upload step 操作时,步骤操作会根据构建中的某些文件计算一个哈希值。您必须提供正则表达式来选择这些文件。cache-upload step 操作存储包含缓存目录内容的镜像,使用哈希进行索引。
当您使用 cache-fetch step 操作时,step 操作会计算相同的哈希值。然后,它会检查此哈希的缓存镜像是否已可用。如果镜像可用,step 操作使用缓存的内容填充您的缓存目录。如果镜像不可用,则该目录保留原样。
使用 cache-fetch step 操作后,您可以运行构建过程。如果成功获取缓存,它将包含之前下载的构建过程的依赖项。如果没有获取缓存,构建过程会通过其正常流程下载依赖项。
cache-fetch 的结果指示是否获取缓存的镜像。后续的 cache-upload step 操作可以使用结果,并在当前哈希的缓存可用时跳过上传新的缓存镜像。
以下示例任务从存储库检索源,获取缓存(如果可用),运行 Maven 构建,然后在未获取缓存时上传构建目录的新缓存镜像。
在任务中使用 cache-fetch 和 cache-upload 步骤操作示例
apiVersion: tekton.dev/v1
kind: Task
metadata:
name: java-demo-task
spec:
workspaces:
- name: source
params:
- name: repo_url
type: string
default: https://github.com/sample-organization/sample-java-project.git
- name: revision
type: string
default: main
- name: registry
type: string
default: image-registry.openshift-image-registry.svc:5000/sample-project/mvn-cache
- name: image
type: string
default: openjdk:latest
- name: buildCommand
type: string
default: "maven -Dmaven.repo.local=${LOCAL_CACHE_REPO} install"
- name: cachePatterns
type: array
default: ["**pom.xml"]
- name: force-cache-upload
type: string
default: "false"
steps:
- name: create-repo
image: $(params.image)
script: |
mkdir -p $(workspaces.source.path)/repo
chmod 777 $(workspaces.source.path)/repo
- name: fetch-repo
ref:
resolver: cluster
params:
- name: name
value: git-clone
- name: namespace
value: openshift-pipelines
- name: kind
value: stepaction
params:
- name: OUTPUT_PATH
value: $(workspaces.source.path)/repo
- name: URL
value: $(params.repo_url)
- name: REVISION
value: $(params.revision)
- name: cache-fetch
ref:
resolver: cluster
params:
- name: name
value: cache-fetch
- name: namespace
value: openshift-pipelines
- name: kind
value: stepaction
params:
- name: patterns
value: $(params.cachePatterns)
- name: source
value: oci://$(params.registry):{{hash}}
- name: cachePath
value: $(workspaces.source.path)/cache
- name: workingdir
value: $(workspaces.source.path)/repo
- name: run-build
image: $(params.image)
workingDir: $(workspaces.source.path)/repo
env:
- name: LOCAL_CACHE_REPO
value: $(workspaces.source.path)/cache/repo
script: |
set -x
$(params.buildCommand)
echo "Cache size is $(du -sh $(workspaces.source.path)/cache)"
- name: cache-upload
ref:
resolver: cluster
params:
- name: name
value: cache-upload
- name: namespace
value: openshift-pipelines
- name: kind
value: stepaction
params:
- name: patterns
value: $(params.cachePatterns)
- name: target
value: oci://$(params.registry):{{hash}}
- name: cachePath
value: $(workspaces.source.path)/cache
- name: workingdir
value: $(workspaces.source.path)/repo
- name: force-cache-upload
value: $(params.force-cache-upload)
| 参数 | 描述 | 类型 | 默认值 |
|---|---|---|---|
|
|
用于选择要计算哈希的文件的正则表达式。例如,对于 Go 项目,您可以使用 |
| |
|
|
用于获取缓存的源 URI;使用 |
| |
|
| 用于提取缓存内容的路径。通常,此路径位于工作区中。 |
| |
|
| 计算哈希的文件所在的路径。 |
| |
|
|
如果为 |
|
|
|
| Google 凭证所在的路径。如果为空,则忽略。 |
| |
|
| AWS 配置文件的路径。如果为空,则忽略。 |
| |
|
| AWS 凭证文件的路径。如果为空,则忽略。 |
| |
|
| 用于配置 S3、GCS 或 Azure 的 blob 查询参数。这些可选参数用于其他功能,如 S3 加速、FIPS 或路径式寻址。 |
|
| 结果 | 类型 | 描述 |
|---|---|---|
|
|
|
|
| 参数 | 描述 | 类型 | 默认值 |
|---|---|---|---|
|
|
用于选择要计算哈希的文件的正则表达式。例如,对于 Go 项目,您可以使用 |
| |
|
|
用于上传缓存的目标 URI;使用 |
| |
|
| 缓存内容的路径,将步骤打包到镜像中。通常,此路径位于工作区中。 |
| |
|
| 计算哈希的文件所在的路径。 |
| |
|
|
如果为 |
|
|
|
|
如果为 |
|
|
|
|
如果为 |
|
|
|
| Google 凭证所在的路径。如果为空,则忽略。 |
| |
|
| AWS 配置文件的路径。如果为空,则忽略。 |
| |
|
| AWS 凭证文件的路径。如果为空,则忽略。 |
| |
|
| 用于配置 S3、GCS 或 Azure 的 blob 查询参数。这些可选参数用于其他功能,如 S3 加速、FIPS 或路径式寻址。 |
|
cache-upload step 操作不返回任何结果。