6장. 파이프라인 실행 관리
Pipeline을 코드로 사용하여 코드 리포지토리에서 파이프라인을 생성하고 이러한 파이프라인을 실행할 수 있습니다.
6.1. Pipeline을 코드로 사용하여 파이프라인 실행 생성 링크 복사링크가 클립보드에 복사되었습니다!
코드로 파이프라인을 사용하여 파이프라인을 실행하려면 리포지토리의 .tekton/
디렉터리에 파이프라인 정의 또는 템플릿을 YAML 파일로 생성할 수 있습니다. 원격 URL을 사용하여 다른 리포지토리의 YAML 파일을 참조할 수 있지만 파이프라인 실행은 .tekton/
디렉터리가 포함된 리포지토리의 이벤트에서만 트리거됩니다.
코드 확인자인 파이프라인은 외부 종속 항목 없이 단일 파이프라인 실행으로 모든 작업을 통해 파이프라인을 번들로 실행합니다.
-
파이프라인의 경우 spec 또는 분리된
Pipeline
오브젝트와 함께 하나 이상의 파이프라인 실행을 사용합니다. - 작업의 경우 파이프라인 내부에 작업 사양을 포함하거나 Task 오브젝트로 별도로 정의합니다.
커밋 및 URL 매개 변수화
{{<var>}} 형식으로 동적 확장 가능한 변수를 사용하여 커밋 및 URL의 매개변수를 지정할 수 있습니다. 현재 다음 변수를 사용할 수 있습니다.
-
{{repo_owner}}
: 리포지토리 소유자. -
{{REPO_NAME}}
: 리포지토리 이름입니다. -
{{repo_url}}
: 리포지토리 전체 URL입니다. -
{{revision}}
: 커밋의 전체 SHA 버전. -
{{sender}}
: 커밋 보낸 사람의 사용자 이름 또는 계정 ID입니다. -
{{source_branch}}
: 이벤트가 시작된 분기 이름입니다. -
{{target_branch}}
: 이벤트가 대상으로 하는 분기 이름입니다. 푸시 이벤트의 경우source_branch
와 동일합니다. -
{{pull_request_number}}
:pull_request
이벤트 유형에 대해서만 정의된 가져오기 또는 병합 요청 번호입니다. -
{{git_auth_secret}}
: 개인 리포지터리를 확인하기 위해 Git 공급자의 토큰을 사용하여 자동으로 생성되는 시크릿 이름입니다.
파이프라인 실행에 이벤트 일치
파이프라인 실행에 특수 주석을 사용하여 각 파이프라인과 다른 Git 공급자 이벤트를 일치시킬 수 있습니다. 이벤트와 일치하는 파이프라인이 여러 개 있는 경우 코드가 병렬로 실행되고 파이프라인 실행이 완료되면 결과를 Git 공급자에 게시합니다.
파이프라인 실행에 가져오기 이벤트 일치
다음 예제를 사용하여 기본 분기를 대상으로 하는 pull_request
이벤트와 pipeline-pr-
파이프라인을 일치시킬 수 있습니다.
main
- 1
- 쉼표로 구분된 항목을 추가하여 여러 분기를 지정할 수 있습니다. 예를 들면
"[main, release-nightly]"
입니다. 또한 다음을 지정할 수 있습니다.-
"refs/heads/main"
과 같은 분기에 대한 전체 참조 -
"refs/heads/\*"
와 같은 패턴 일치가 있는 글러입니다. -
"refs/tags/1.\*"
와 같은 태그
-
파이프라인 실행에 푸시 이벤트 일치
다음 예제를 사용하여 refs/heads/main
분기를 대상으로 하는 푸시 이벤트와 함께 pipeline-
파이프라인을 일치시킬 수 있습니다.
push
-on-main
- 1
- 쉼표로 구분된 항목을 추가하여 여러 분기를 지정할 수 있습니다. 예를 들면
"[main, release-nightly]"
입니다. 또한 다음을 지정할 수 있습니다.-
"refs/heads/main"
과 같은 분기에 대한 전체 참조 -
"refs/heads/\*"
와 같은 패턴 일치가 있는 글러입니다. -
"refs/tags/1.\*"
와 같은 태그
-
고급 이벤트 일치
코드로서의 파이프라인은 고급 이벤트 일치에 대한 CEL(Common Expression Language) 기반 필터링 사용을 지원합니다. 파이프라인 실행에 pipelinesascode.tekton.dev/on-cel-expression
주석이 있는 경우 Pipeline은 CEL 표현식을 사용하고 on-target-branch
주석을 건너뜁니다. CEL 표현식은 간단한 on-target-branch
주석 일치와 비교하여 복잡한 필터링 및 부정을 허용합니다.
Pipeline과 함께 CEL 기반 필터링을 코드로 사용하려면 다음 주석 예제를 고려하십시오.
기본
분기를 대상으로 하는pull_request
이벤트를 일치시키고wip
분기에서 가져오는 경우 다음을 수행합니다.... pipelinesascode.tekton.dev/on-cel-expression: | event == "pull_request" && target_branch == "main" && source_branch == "wip" ...
... pipelinesascode.tekton.dev/on-cel-expression: | event == "pull_request" && target_branch == "main" && source_branch == "wip" ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 경로가 변경된 경우에만 파이프라인을 실행하려면
.pathChanged
접미사 함수를 glob 패턴과 함께 사용하면 됩니다.... pipelinesascode.tekton.dev/on-cel-expression: | event == "pull_request" && "docs/\*.md".pathChanged() ...
... pipelinesascode.tekton.dev/on-cel-expression: | event == "pull_request" && "docs/\*.md".pathChanged()
1 ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
docs
디렉터리의 모든 마크다운 파일과 일치합니다.
제목
[DOWNSTREAM]
으로 시작하는 모든 가져오기 요청을 일치시킵니다.... pipelinesascode.tekton.dev/on-cel-expression: | event == "pull_request && event_title.startsWith("[DOWNSTREAM]") ...
... pipelinesascode.tekton.dev/on-cel-expression: | event == "pull_request && event_title.startsWith("[DOWNSTREAM]") ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pull_request
이벤트에서 파이프라인을 실행하려면실험적
분기를 건너뜁니다.... pipelinesascode.tekton.dev/on-cel-expression: | event == "pull_request" && target_branch != experimental" ...
... pipelinesascode.tekton.dev/on-cel-expression: | event == "pull_request" && target_branch != experimental" ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Pipeline을 코드로 사용하는 동안 고급 CEL 기반 필터링의 경우 다음 필드 및 접미사 함수를 사용할 수 있습니다.
-
이벤트
:push
또는pull_request
이벤트입니다. -
target_branch
: 대상 분기입니다. -
source_branch
:pull_request
이벤트의 출처 분기입니다.푸시
이벤트의 경우target_branch
와 동일합니다. -
event_title
:push
이벤트의 커밋 제목과pull_request
이벤트에 대한 가져오기 또는 병합 요청과 같은 이벤트 제목과 일치합니다. 현재 GitHub, Gitlab 및 Bitbucket Cloud만 지원되는 공급자입니다. -
.pathChanged
: 문자열에 대한 접미사 함수입니다. 문자열은 경로가 변경되었는지 확인하는 경로의 glob일 수 있습니다. 현재 GitHub 및 Gitlab만 공급자로 지원됩니다.
Github API 작업에 임시 GitHub 앱 토큰 사용
Pipelines에서 GitHub App에서 코드로 생성한 임시 설치 토큰을 사용하여 GitHub API에 액세스할 수 있습니다. 토큰 값은 git-provider-token
키의 개인 리포지토리에 대해 생성된 임시 {{git_auth_secret}}
동적 변수에 저장됩니다.
예를 들어 가져오기 요청에 주석을 추가하려면 Pipelines를 Code 주석으로 사용하여 Tekton Hub의 github-add-comment
작업을 사용할 수 있습니다.
... pipelinesascode.tekton.dev/task: "github-add-comment" ...
...
pipelinesascode.tekton.dev/task: "github-add-comment"
...
그런 다음 파이프라인 실행 정의의 tasks
섹션 또는 finally
작업에 작업을 추가할 수 있습니다.
- 1
- 동적 변수를 사용하면 모든 리포지터리의 가져오기 요청에 이 스니펫 템플릿을 재사용할 수 있습니다.
GitHub 앱에서는 생성된 설치 토큰을 8시간 동안 사용할 수 있으며 클러스터에서 다르게 구성하지 않는 한 이벤트가 시작된 저장소로 범위가 지정됩니다.
추가 리소스