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 하위 모듈을 초기화하고 가져옵니다. |
|
|
|
| 가져올 커밋 수, "shallow clone"은 단일 커밋입니다. |
|
|
|
| "스parse 체크아웃"을 수행하기 위해 쉼표로 구분된 디렉터리 패턴 목록입니다. |
|
| 결과 | 유형 | 설명 |
|---|---|---|
|
|
| 복제된 Git 리포지토리에 있는 현재 분기의 HEAD에 있는 커밋의 SHA 다이제스트입니다. |
|
|
| 복제된 리포지토리의 URL입니다. |
|
|
| 복제된 Git 리포지토리에 있는 현재 분기의 HEAD에 있는 커밋의 epoch 타임스탬프입니다. |
cache-upload 및 cache-fetch
cache-upload 및 cache-fetch 단계 작업을 사용하는 것은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
cache-upload 및 cache-fetch 단계 작업을 사용하여 빌드 프로세스가 종속 항목을 유지하고 Amazon Simple Storage Service(GCS) 버킷 또는 OCI(Open Container Initiative) 리포지토리에 저장하는 캐시 디렉터리를 보존합니다.
cache-upload 단계 작업을 사용하면 단계 작업이 빌드의 특정 파일에 따라 해시를 계산합니다. 이러한 파일을 선택하려면 정규식을 제공해야 합니다. cache-upload 단계 작업은 해시로 인덱싱되는 캐시 디렉터리의 콘텐츠가 포함된 이미지를 저장합니다.
cache-fetch 단계 작업을 사용하면 단계 작업이 동일한 해시를 계산합니다. 그런 다음 이 해시의 캐시된 이미지를 사용할 수 있는지 확인합니다. 이미지를 사용할 수 있는 경우 단계 작업은 캐시 디렉터리를 캐시된 콘텐츠로 채웁니다. 이미지를 사용할 수 없는 경우 디렉터리는 그대로 유지됩니다.
cache-fetch 단계 작업을 사용한 후 빌드 프로세스를 실행할 수 있습니다. 캐시를 성공적으로 가져오는 경우 빌드 프로세스에서 이전에 다운로드한 종속 항목이 포함됩니다. 캐시를 가져오지 않은 경우 빌드 프로세스는 일반 절차를 통해 종속성을 다운로드합니다.
cache-fetch 의 결과는 캐시된 이미지를 가져올지 여부를 나타냅니다. 후속 cache-upload 단계 작업은 결과를 사용하고 현재 해시의 캐시를 이미 사용할 수 있는 경우 새 캐시 이미지 업로드를 건너뛸 수 있습니다.
다음 예제 작업에서는 리포지토리에서 소스를 검색하고 캐시를 가져오고(사용 가능한 경우) 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 단계 작업은 결과를 반환하지 않습니다.