3.4. 인증된 Git API를 사용하여 원격 파이프라인, 작업 또는 단계 작업 지정
Git 확인자를 사용하여 Git 리포지토리에서 원격 파이프라인, 작업 또는 StepAction
정의를 지정할 수 있습니다. 리포지토리에는 파이프라인 또는 작업을 정의하는 YAML 파일이 포함되어야 합니다. 사용자 인증을 지원하는 인증된 API를 사용하여 리포지토리에 안전하게 액세스할 수 있습니다.
3.4.1. 인증된 API에 대한 Git 확인 프로그램 구성
인증된 SCM(소스 제어 관리) API의 경우 인증된 Git 연결에 대한 구성을 설정해야 합니다.
go-scm
라이브러리에서 지원하는 Git 리포지토리 공급자를 사용할 수 있습니다. 모든 go-scm
구현이 Git 리졸버에서 테스트된 것은 아니지만 다음 공급자가 작동하는 것으로 알려져 있습니다.
-
GitHub.com
및 GitHub Enterprise -
GitLab.com
및 자체 호스팅 Gitlab - Gitea
- Bitbucket 서버
- Bitbucket 클라우드
- 인증된 SCM API를 사용하여 Git 연결을 구성할 수 있습니다. 클러스터의 모든 사용자가 하나의 리포지토리에 액세스할 수 있도록 하는 보안 토큰을 제공할 수 있습니다. 또한 특정 파이프라인 또는 작업에 대해 다양한 SCM 공급자 및 토큰을 지정할 수 있습니다.
- 인증된 SCM API를 사용하도록 Git 확인자를 구성하는 경우 익명 Git 복제 참조를 사용하여 파이프라인 및 작업을 검색할 수도 있습니다.
프로세스
TektonConfig
사용자 지정 리소스를 편집하려면 다음 명령을 입력합니다.$ oc edit TektonConfig config
TektonConfig
사용자 정의 리소스에서pipeline.git-resolver-config
사양을 편집합니다.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 토큰이 포함된 시크릿의 이름입니다.
- 6
- 토큰이 포함된 토큰 시크릿 내의 키입니다.
- 7
- 토큰 시크릿이 포함된 네임스페이스가
기본값이
아닌 경우입니다. - 8
- 선택 사항: 인증된 API를 사용하는 경우 리포지토리의 기본 조직입니다. 이 조직은 확인자 매개변수에 조직을 지정하지 않는 경우 사용됩니다.
인증된 SCM API를 사용하려면 scm-type
,api-token-secret-name
, api-token-secret-key
설정이 필요합니다.
3.4.2. 여러 Git 공급자 구성
여러 Git 공급자를 구성하거나 동일한 Git 공급자에 대한 여러 구성을 추가하여 다른 작업 실행 및 파이프라인 실행에 사용할 수 있습니다.
고유 ID 키 접두사를 사용하여 TektonConfig
CR(사용자 정의 리소스)에 세부 정보를 추가합니다.
프로세스
다음 명령을 실행하여
TektonConfig
CR을 편집합니다.$ oc edit TektonConfig config
TektonConfig
CR에서pipeline.git-resolver-config
사양을 편집합니다.apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: # ... pipeline: git-resolver-config: # configuration 1 1 fetch-timeout: "1m" default-url: "https://github.com/tektoncd/catalog.git" default-revision: "main" scm-type: "github" server-url: "" api-token-secret-name: "" api-token-secret-key: "" api-token-secret-namespace: "default" default-org: "" # configuration 2 2 test1.fetch-timeout: "5m" test1.default-url: "" test1.default-revision: "stable" test1.scm-type: "github" test1.server-url: "api.internal-github.com" test1.api-token-secret-name: "test1-secret" test1.api-token-secret-key: "token" test1.api-token-secret-namespace: "test1" test1.default-org: "tektoncd" # configuration 3 3 test2.fetch-timeout: "10m" test2.default-url: "" test2.default-revision: "stable" test2.scm-type: "gitlab" test2.server-url: "api.internal-gitlab.com" test2.api-token-secret-name: "test2-secret" test2.api-token-secret-key: "pat" test2.api-token-secret-namespace: "test2" test2.default-org: "tektoncd-infra" # ...
주의.
기호가 있는configKey
값은 지원되지 않습니다..
기호가 포함된configKey
값을 전달하려고 하면 값을 통과한TaskRun
또는PipelineRun
리소스가 실행되지 않습니다.
3.4.3. 인증된 SCM API와 Git 확인자를 사용하여 원격 파이프라인, 작업 또는 단계 작업 지정
파이프라인 실행을 생성할 때 인증된 SCM API를 사용하여 Git 리포지토리에서 원격 파이프라인을 지정할 수 있습니다. 파이프라인 또는 작업 실행을 생성할 때 Git 리포지토리에서 원격 작업을 지정할 수 있습니다. 작업 내에서 단계를 생성할 때 Git 리포지토리에서 원격 StepAction
정의를 참조할 수 있습니다.
사전 요구 사항
- 인증된 SCM API를 사용하려면 Git 확인자에 대해 인증된 Git 연결을 구성해야 합니다.
프로세스
Git 리포지토리의 원격 파이프라인, 작업 또는
StepAction
정의를 지정하려면pipelineRef
,taskRef
또는step.ref
사양에 다음 참조 형식을 사용합니다.# ... resolver: git params: - name: org value: <git_organization_name> - name: repo value: <git_repository_name> - name: revision value: <branch_name> - name: pathInRepo value: <path_in_repository> # ...
표 3.4. Git 확인자에 지원되는 매개변수 매개변수 설명 예시 값 조직
인증된 SCM API를 사용하는 경우 리포지토리의 조직입니다.
tektoncd
리포지토리
인증된 SCM API를 사용하는 경우 리포지토리 이름입니다.
test-infra
버전
리포지토리의 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: org value: tektoncd - name: repo value: catalog - 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: org value: tektoncd - name: repo value: catalog - 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: org value: tektoncd - name: repo value: catalog - name: revision value: main - name: pathInRepo value: task/git-clone/0.6/git-clone.yaml params: - name: sample-task-parameter value: test
다음 예제 작업에는 Git 리포지토리의 StepAction
정의를 참조하는 단계가 포함되어 있습니다.
apiVersion: tekton.dev/v1 kind: Task metadata: name: git-stepaction-reference-demo spec: steps: - name: example-step ref: resolver: git - name: org value: openshift-pipelines - name: repo value: tektoncd-catalog - name: revision value: p - name: pathInRepo value: stepactions/stepaction-git-clone/0.4.1/stepaction-git-clone.yaml params: - name: sample-stepaction-parameter value: test
3.4.4. 여러 Git 공급자 지정
TaskRun
및 PipelineRun
리소스를 생성할 때 고유한 configKey
매개변수를 전달하여 여러 Git 공급자를 지정할 수 있습니다.
configKey
매개변수가 전달되지 않으면 기본 구성이 사용됩니다. configKey
값을 기본값으로 설정하여 기본 구성을 지정할 수도 있습니다.
.
기호가 있는 configKey
값은 지원되지 않습니다. .
기호가 포함된 configKey
값을 전달하려고 하면 값을 통과한 TaskRun
또는 PipelineRun
리소스가 실행되지 않습니다.
사전 요구 사항
-
Tektonconfig
사용자 정의 리소스를 통해 여러 Git 공급자를 구성합니다. 자세한 내용은 "여러 Git 공급자 구성"을 참조하십시오.
프로세스
Git 공급자를 지정하려면
pipelineRef
및taskRef
사양에 다음 참조 형식을 사용합니다.# ... resolver: git params: # ... - name: configKey value: <your_unique_key> 1 # ...
- 1
- 구성 키 중 하나와 일치하는 고유 키(예:
test1
)
3.4.5. Git 확인자 구성을 재정의하는 인증된 SCM API와 함께 Git 확인자를 사용하여 원격 파이프라인 또는 작업 지정
특정 파이프라인 실행 또는 작업에서 초기 구성 설정을 재정의하여 다양한 사용 사례에 따라 동작을 사용자 지정할 수 있습니다. 이 방법을 사용하여 TektonConfig
CR(사용자 정의 리소스)에 구성되지 않은 인증된 공급자에 액세스할 수 있습니다.
다음 예제 작업 실행에서는 이전 확인자 구성을 재정의하는 Git 리포지토리의 원격 작업을 참조합니다.
apiVersion: tekton.dev/v1beta1 kind: TaskRun metadata: name: git-task-reference-demo spec: taskRef: resolver: git params: - name: org value: tektoncd - name: repo value: catalog - name: revision value: main - name: pathInRepo value: task/git-clone/0.6/git-clone.yaml - name: token value: my-secret-token - name: tokenKey value: token - name: scmType value: github - name: serverURL value: https://ghe.mycompany.com
매개변수 | 설명 | 예시 값 |
---|---|---|
| 리포지토리의 조직입니다. |
|
리포지토리 | 리포지토리 이름입니다. | catalog |
버전 | 리포지토리의 Git 버전입니다. 분기 이름, 태그 이름 또는 커밋 SHA 해시를 지정할 수 있습니다. | main |
pathInRepo | 리포지토리에 있는 YAML 파일의 경로 이름입니다. | task/git-clone/0.6/git-clone.yaml |
token | 인증에 사용되는 시크릿 이름입니다. | my-secret-token |
tokenKey | 토큰의 키 이름입니다. | token |
scmType | SCM(소스 제어 관리) 시스템의 유형입니다. | github |
serverURL | 리포지토리를 호스팅하는 서버의 URL입니다. |
|