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 로 설정합니다.

프로세스

  1. 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 이벤트 리스너로 생성합니다.

  2. Pipeline의 경로 URL을 클러스터에서 생성된 코드 컨트롤러로 확인합니다.

    $ echo https://$(oc get route -n pipelines-as-code el-pipelines-as-code-interceptor -o jsonpath='{.spec.host}')

    이 URL은 나중에 Git 리포지토리 호스팅 서비스 공급자를 구성할 때 필요합니다.

  3. (선택 사항) 관리자가 아닌 사용자가 해당 네임스페이스에서 리포지토리 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 바이너리를 설치할 수도 있습니다.

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을 코드로 수동으로 생성하고 구성하려면 다음 단계를 수행합니다.

  1. GitHub 계정에 로그인합니다.
  2. Settings -tekton Developer settings -tekton GitHub Apps 로 이동하여 New GitHub App 을 클릭합니다.
  3. 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 명령을 실행하여 시크릿을 생성할 수 있습니다.
  4. 다음 리포지토리 권한을 선택합니다.

    • Check:읽기 & 쓰기
    • 내용:읽기 & 쓰기
    • 문제:읽기 & 쓰기
    • metadata:읽기 전용
    • 가져오기 요청:읽기 & 쓰기
  5. 다음 조직 권한을 선택합니다.

    • 멤버:읽기 전용
    • 계획:읽기 전용
  6. 다음 사용자 권한 선택:

    • 커밋 주석
    • 문제 코멘트
    • pull request
    • pull request review
    • pull request review comment
    • push
  7. Create GitHub App 을 클릭합니다.
  8. 새로 만든 GitHub 앱의 세부 정보 페이지에서 맨 위에 표시된 앱 ID 를 확인합니다.
  9. 개인 키 섹션에서 개인 키 생성을 클릭하여 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
1
Red Hat OpenShift Pipelines Operator를 사용하여 기본적으로 Code로 설치된 Pipeline의 경우 pipelines-as-code 대신 openshift-pipelines 네임스페이스를 사용합니다.
2
GitHub App을 구성하는 동안 다운로드한 개인 키의 경로입니다.
3
GitHub 앱의 앱 ID 입니다.
4
GitHub 앱을 만들 때 제공되는 Webhook 보안입니다.
참고

코드의 파이프라인은 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

표 4.7. 코드 설치 및 구성으로 Pipeline 부트스트랩

명령설명

tkn pac 부트스트랩

GitHub 및 GitHub Enterprise와 같은 Git 리포지토리 호스팅 서비스 공급자의 코드로 Pipeline을 설치하고 구성합니다.

tkn pac bootstrap --nightly

파이프라인의 야간 빌드를 코드로 설치합니다.

tkn pac bootstrap --route-url <public_url_to_ingress_spec>

OpenShift 경로 URL을 덮어씁니다.

기본적으로 tkn pac 부트스트랩 은 OpenShift 경로를 탐지합니다. 이 경로는 코드 컨트롤러 서비스로 Pipeline과 자동으로 연결됩니다.

OpenShift Container Platform 클러스터가 없는 경우 Ingress 끝점을 가리키는 공용 URL을 요청합니다.

tkn pac bootstrap github-app

pipelines-as-code 네임스페이스에서 GitHub 애플리케이션 및 시크릿을 생성합니다.

4.8.5.3.2. 리포지터리

표 4.8. Pipeline을 코드 리포지토리로 관리

명령설명

tkn pac repo create

새 Pipeline을 Code 리포지터리로 생성하고 파이프라인 실행 템플릿을 기반으로 네임스페이스를 생성합니다.

tkn pac 리포지토리 목록

모든 Pipeline을 Code 리포지토리로 나열하고 연결된 실행의 마지막 상태를 표시합니다.

tkn pac repo describe

파이프라인을 코드 리포지토리로 설명하고 관련 실행을 설명합니다.

4.8.5.3.3. generate

표 4.9. Pipeline을 코드로 사용하여 파이프라인 실행 생성

명령설명

tkn pac generate

간단한 파이프라인 실행을 생성합니다.

소스 코드가 포함된 디렉터리에서 실행되는 경우 현재 Git 정보를 자동으로 탐지합니다.

또한 기본 언어 감지 기능을 사용하고 언어에 따라 추가 작업을 추가합니다.

예를 들어 리포지토리 루트에서 setup.py 파일을 감지하면 pylint 작업이 생성된 파이프라인 실행에 자동으로 추가됩니다.

4.8.5.3.4. resolve

표 4.10. Pipeline을 코드로 사용하여 파이프라인 실행 해결 및 실행

명령설명

tkn pac 해결

Pipeline이 서비스상의 코드로 Pipeline을 소유하고 있는 것처럼 파이프라인 실행을 실행합니다.

tkn pac resolve -f .tekton/pull-request.yaml | oc apply -f -

.tekton/pull-request.yaml 에서 템플릿을 사용하는 라이브 파이프라인 실행 상태를 표시합니다.

로컬 시스템에서 실행되는 Kubernetes 설치와 결합하여 새 커밋을 생성하지 않고 파이프라인 실행을 확인할 수 있습니다.

소스 코드 리포지토리에서 명령을 실행하면 현재 Git 정보를 감지하고 현재 버전 또는 분기와 같은 매개변수를 자동으로 해결합니다.

tkn pac resolve -f .tekton/pr.yaml -p revision=main -p repo_name=<repository_name>

Git 리포지토리에서 파생되는 기본 매개변수 값을 재정의하여 파이프라인 실행을 실행합니다.

-f 옵션은 디렉터리 경로를 수락하고 해당 디렉터리의 모든 .yaml 또는 .yml 파일에 tkn pac resolve 명령을 적용할 수도 있습니다. 동일한 명령에서 -f 플래그를 여러 번 사용할 수도 있습니다.

-p 옵션을 사용하여 매개변수 값을 지정하여 Git 리포지토리에서 수집된 기본 정보를 덮어쓸 수 있습니다. 예를 들어 Git 분기를 버전 및 다른 리포지토리 이름으로 사용할 수 있습니다.

4.8.6. 코드 구성으로 Pipeline 사용자 정의

클러스터 관리자는 Pipeline을 코드로 사용자 정의하도록 pipelines-as-code 네임스페이스에서 pipelines-as-code 구성 맵을 사용하여 다음 매개변수를 구성할 수 있습니다.

표 4.11. 코드 구성으로 Pipeline 사용자 정의

매개변수설명Default

application-name

애플리케이션 이름입니다. 예를 들어 GitHub Checks 레이블에 표시되는 이름입니다.

"pipelines as Code CI"

max-keep-days

실행된 파이프라인 실행이 pipelines-as-code 네임스페이스에 유지되는 일 수입니다.

이 configmap 설정은 사용자의 GitHub 리포지토리의 파이프라인 실행 정의에서 주석에 의해 제어되는 사용자 파이프라인 실행의 정리에 영향을 미치지 않습니다.

 

secret-auto-create

GitHub 애플리케이션에서 생성된 토큰을 사용하여 시크릿을 자동으로 생성할지 여부를 나타냅니다. 그런 다음 이 시크릿을 개인 리포지토리와 함께 사용할 수 있습니다.

enabled

remote-tasks

활성화하면 파이프라인 실행 주석의 원격 작업을 허용합니다.

enabled

hub-url

Tekton Hub API 의 기본 URL입니다.

https://hub.tekton.dev/

4.8.7. 추가 리소스