4.8. Pipeline을 코드로 사용
코드의 파이프라인은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
Pipeline을 코드로 사용하면 클러스터 관리자 및 필요한 권한이 있는 사용자는 소스 코드 Git 리포지토리의 일부로 파이프라인 템플릿을 정의할 수 있습니다. 소스 코드 푸시 또는 구성된 Git 리포지토리의 가져오기 요청에 의해 트리거되면 해당 기능은 파이프라인을 실행하고 상태를 보고합니다.
4.8.1. 주요 기능
코드 파이프라인은 다음 기능을 지원합니다.
- Git 리포지토리를 호스팅하는 플랫폼에서 요청 상태 및 제어를 가져옵니다.
- GitHub Checks API에서 재확인을 포함하여 파이프라인 실행 상태를 설정합니다.
- GitHub 가져오기 요청 및 커밋 이벤트
-
/retest
와 같은 주석에서 요청 작업을 가져옵니다. - Git 이벤트가 필터링되고 각 이벤트마다 별도의 파이프라인이 있습니다.
- 로컬 작업, Tekton Hub 및 원격 URL을 포함하여 Pipeline의 자동 작업 확인.
- GitHub Blob 및 오브젝트 API를 사용하여 구성을 검색합니다.
-
GitHub 조직의 ACL(액세스 목록) 또는 Prow 스타일
OWNER
파일을 사용합니다. -
부트스트랩 및 Pipeline을 코드 리포지토리로 관리하는
tkn-pac
CLI 플러그인입니다. - GitHub 앱, GitHub Webhook, Bitbucket Server 및 Bitbucket Cloud에 대한 지원
4.8.2. OpenShift Container Platform에 코드로 Pipeline 설치
Red Hat OpenShift Pipelines Operator를 설치할 때 Code가 기본적으로 설치되어 있는 파이프라인입니다. Pipelines 1.7 이상 버전을 사용하는 경우 Pipeline을 코드로 수동으로 설치하는 절차를 건너뜁니다.
그러나 Red Hat OpenShift Pipelines Operator를 사용하여 Pipeline의 기본 설치를 Code로 비활성화하려면 TektonConfig
사용자 정의 리소스에서 enablePipelinesAsCode
필드의 값을 false
로 설정합니다.
... spec: addon: enablePipelinesAsCode: false ...
Operator를 사용하여 Pipeline을 Code로 설치하려면 enablePipelinesAsCode
필드의 값을 true
로 설정합니다.
프로세스
Red Hat OpenShift Pipelines Operator를 사용하여 기본 설치가 아닌 OpenShift Container Platform 클러스터에 Pipeline을 코드로 수동으로 설치하려면 다음 명령을 실행합니다.
$ VERSION=0.5.4 $ oc apply -f https://raw.githubusercontent.com/openshift-pipelines/pipelines-as-code/release-$VERSION/release-$VERSION.yaml
참고안정적인 최신 버전의 경우 릴리스 페이지를 확인하십시오. 또한 Red Hat OpenShift Pipelines 릴리스 노트를 확인하여 Pipeline as Code 버전이 Red Hat OpenShift Pipelines 버전과 호환되는지 확인하십시오.
이 명령은
pipelines-as-code
네임스페이스에 Pipeline을 코드로 설치하고 Pipeline의 사용자 역할과 Pipeline의 경로 URL을 Code 이벤트 리스너로 생성합니다.Pipeline의 경로 URL을 클러스터에서 생성된 코드 컨트롤러로 확인합니다.
$ echo https://$(oc get route -n pipelines-as-code el-pipelines-as-code-interceptor -o jsonpath='{.spec.host}')
이 URL은 나중에 Git 리포지토리 호스팅 서비스 공급자를 구성할 때 필요합니다.
(선택 사항) 관리자가 아닌 사용자가 해당 네임스페이스에서 리포지토리 CRD(사용자 정의 리소스 정의)를 생성할 수 있도록 하려면 네임스페이스에서
openshift-pipeline-as-code-clusterrole
이라는 이름으로RoleBinding
오브젝트를 생성합니다. 예를 들어 사용자가user-ci
네임스페이스에 리포지토리 CRD를 생성할 수 있도록 하려면 다음 명령을 실행합니다.$ oc adm policy add-role-to-user openshift-pipeline-as-code-clusterrole user -n user-ci
또는
oc apply -f <RoleBinding.yaml> 명령을 사용하여 다음 YAML 파일을 적용합니다.
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: openshift-pipeline-as-code-clusterrole namespace: user-ci roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: openshift-pipeline-as-code-clusterrole subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: user
4.8.3. 코드 CLI로 Pipeline 설치
클러스터 관리자는 로컬 머신에서 tkn-pac
CLI 툴을 테스트용 컨테이너로 사용할 수 있습니다. Red Hat OpenShift Pipelines의 tkn
CLI를 설치할 때 tkn-pac
CLI 도구가 자동으로 설치됩니다.
지원되는 플랫폼에 tkn-pac
tkn-pac
버전 0.23.1
바이너리를 설치할 수도 있습니다.
- Linux (x86_64, amd64)
- Linux on IBM Z 및 LinuxONE(s390x)
- Linux on IBM Power Systems(ppc64le)
- mac
- 참고
바이너리는
tkn
버전0.23.1
과 호환됩니다.
4.8.4. Git 리포지토리 호스팅 서비스 공급자의 코드로 Pipeline 구성
Pipeline을 코드로 설치한 후 클러스터 관리자는 Git 리포지토리 호스팅 서비스 공급자를 구성할 수 있습니다. 현재 다음 서비스가 지원됩니다.
- GitHub App
- GitHub Webhook
- Bitbucket Server
- Bitbucket Cloud
GitHub App은 Pipeline을 코드로 사용하는 데 권장되는 서비스입니다.
4.8.4.1. Pipeline을 GitHub 앱의 코드로 구성
GitHub Apps는 Red Hat OpenShift Pipelines와의 통합 지점 역할을 하며 Git 기반 워크플로를 OpenShift Pipelines에 활용합니다. 클러스터 관리자는 모든 클러스터 사용자에 대해 단일 GitHub App을 구성할 수 있습니다. GitHub 앱이 Pipeline을 Code로 사용하려면 GitHub 앱의 Webhook가 GitHub 이벤트를 수신 대기하는 Code 이벤트 리스너 경로(또는 Ingress 끝점)로 Pipeline을 가리키는지 확인하십시오.
4.8.4.1.1. GitHub 앱 구성
클러스터 관리자는 다음 명령을 실행하여 GitHub App을 생성할 수 있습니다.
$ tkn pac bootstrap github-app
tkn pac
CLI 플러그인이 설치되지 않은 경우 GitHub App을 수동으로 생성할 수 있습니다.
프로세스
Pipeline용 GitHub App을 코드로 수동으로 생성하고 구성하려면 다음 단계를 수행합니다.
- GitHub 계정에 로그인합니다.
- Settings -tekton Developer settings -tekton GitHub Apps 로 이동하여 New GitHub App 을 클릭합니다.
GitHub 앱 양식에 다음 정보를 제공합니다.
-
GitHub Application Name:
OpenShift Pipelines
- 홈페이지 URL: OpenShift 콘솔 URL
Webhook URL: 파이프라인을 코드 경로 또는 수신 URL로 설정합니다.
echo https://$(oc get route -n pipelines-as-pipelines-as-code-interceptor -o jsonpath='{.spec.host}')
명령을 실행하여 확인할 수 있습니다.참고Red Hat OpenShift Pipelines Operator를 사용하여 기본적으로 Code로 설치된 Pipeline의 경우
pipelines-as-code
대신openshift-pipelines
네임스페이스를 사용합니다.-
Webhook 보안: 임의의 시크릿.
openssl rand -hex 20
명령을 실행하여 시크릿을 생성할 수 있습니다.
-
GitHub Application Name:
다음 리포지토리 권한을 선택합니다.
-
Check:
읽기 & 쓰기
-
내용:
읽기 & 쓰기
-
문제:
읽기 & 쓰기
-
metadata:
읽기 전용
-
가져오기 요청:
읽기 & 쓰기
-
Check:
다음 조직 권한을 선택합니다.
-
멤버:
읽기 전용
-
계획:
읽기 전용
-
멤버:
다음 사용자 권한 선택:
- 커밋 주석
- 문제 코멘트
- pull request
- pull request review
- pull request review comment
- push
- Create GitHub App 을 클릭합니다.
- 새로 만든 GitHub 앱의 세부 정보 페이지에서 맨 위에 표시된 앱 ID 를 확인합니다.
- 개인 키 섹션에서 개인 키 생성을 클릭하여 GitHub 앱의 개인 키를 자동으로 생성하고 다운로드합니다. 향후 참조 및 사용을 위해 개인 키를 안전하게 저장합니다.
4.8.4.1.2. GitHub 앱에 액세스하도록 Pipeline을 코드로 구성
새로 생성된 GitHub 앱에 액세스하도록 Pipeline을 코드로 구성하려면 다음 명령을 실행합니다.
+
$ oc -n <pipelines-as-code> create secret generic pipelines-as-code-secret \ 1 --from-literal github-private-key="$(cat <PATH_PRIVATE_KEY>)" \ 2 --from-literal github-application-id="<APP_ID>" \ 3 --from-literal webhook.secret="<WEBHOOK_SECRET>" 4
코드의 파이프라인은 GitHub Enterprise에서 설정된 헤더를 탐지하고 GitHub Enterprise API 권한 부여 URL에 사용하여 GitHub Enterprise에서 자동으로 작동합니다.
4.8.5. Code 명령 참조 파이프라인
tkn-pac
CLI 툴에서는 다음 기능을 제공합니다.
- 코드 설치 및 구성으로 부트스트랩 파이프라인.
- 새 Pipeline을 코드 리포지토리로 생성합니다.
- 모든 Pipeline을 코드 리포지토리로 나열합니다.
- Pipeline을 Code 리포지토리 및 관련 실행으로 설명합니다.
- 시작하는 간단한 파이프라인 실행을 생성합니다.
- Pipeline에서 코드로 실행한 것처럼 파이프라인 실행을 해결합니다.
테스트 및 실험용 기능에 해당하는 명령을 사용할 수 있으므로 애플리케이션 소스 코드가 포함된 Git 리포지토리를 변경할 필요가 없습니다.
4.8.5.1. 기본 구문
$ tkn pac [command or options] [arguments]
4.8.5.2. 글로벌 옵션
$ tkn pac --help
4.8.5.3. 유틸리티 명령
4.8.5.3.1. bootstrap
명령 | 설명 |
---|---|
| GitHub 및 GitHub Enterprise와 같은 Git 리포지토리 호스팅 서비스 공급자의 코드로 Pipeline을 설치하고 구성합니다. |
| 파이프라인의 야간 빌드를 코드로 설치합니다. |
| OpenShift 경로 URL을 덮어씁니다.
기본적으로 OpenShift Container Platform 클러스터가 없는 경우 Ingress 끝점을 가리키는 공용 URL을 요청합니다. |
|
|
4.8.5.3.2. 리포지터리
명령 | 설명 |
---|---|
| 새 Pipeline을 Code 리포지터리로 생성하고 파이프라인 실행 템플릿을 기반으로 네임스페이스를 생성합니다. |
| 모든 Pipeline을 Code 리포지토리로 나열하고 연결된 실행의 마지막 상태를 표시합니다. |
| 파이프라인을 코드 리포지토리로 설명하고 관련 실행을 설명합니다. |
4.8.5.3.3. generate
명령 | 설명 |
---|---|
| 간단한 파이프라인 실행을 생성합니다. 소스 코드가 포함된 디렉터리에서 실행되는 경우 현재 Git 정보를 자동으로 탐지합니다. 또한 기본 언어 감지 기능을 사용하고 언어에 따라 추가 작업을 추가합니다.
예를 들어 리포지토리 루트에서 |
4.8.5.3.4. resolve
명령 | 설명 |
---|---|
| Pipeline이 서비스상의 코드로 Pipeline을 소유하고 있는 것처럼 파이프라인 실행을 실행합니다. |
|
로컬 시스템에서 실행되는 Kubernetes 설치와 결합하여 새 커밋을 생성하지 않고 파이프라인 실행을 확인할 수 있습니다. 소스 코드 리포지토리에서 명령을 실행하면 현재 Git 정보를 감지하고 현재 버전 또는 분기와 같은 매개변수를 자동으로 해결합니다. |
| Git 리포지토리에서 파생되는 기본 매개변수 값을 재정의하여 파이프라인 실행을 실행합니다.
|
4.8.6. 코드 구성으로 Pipeline 사용자 정의
클러스터 관리자는 Pipeline을 코드로 사용자 정의하도록 pipelines-as-code
네임스페이스에서 pipelines-as-code
구성 맵을 사용하여 다음 매개변수를 구성할 수 있습니다.
매개변수 | 설명 | Default |
---|---|---|
| 애플리케이션 이름입니다. 예를 들어 GitHub Checks 레이블에 표시되는 이름입니다. |
|
|
실행된 파이프라인 실행이 이 configmap 설정은 사용자의 GitHub 리포지토리의 파이프라인 실행 정의에서 주석에 의해 제어되는 사용자 파이프라인 실행의 정리에 영향을 미치지 않습니다. | |
| GitHub 애플리케이션에서 생성된 토큰을 사용하여 시크릿을 자동으로 생성할지 여부를 나타냅니다. 그런 다음 이 시크릿을 개인 리포지토리와 함께 사용할 수 있습니다. |
|
| 활성화하면 파이프라인 실행 주석의 원격 작업을 허용합니다. |
|
| Tekton Hub API 의 기본 URL입니다. |