4.4. Pipeline 조립
Pipeline은 CI/CD 흐름을 나타내며 실행할 Task들로 정의됩니다. 여러 애플리케이션 및 환경에서 포괄적으로 적용되고 재사용 가능하도록 설계되었습니다.
Pipeline은 from
및 runAfter
매개변수를 사용하여 Task들이 상효 작용하는 방법과 실행 순서를 지정합니다. 그리고 workspaces
필드를 사용하여 Pipeline의 각 Task 실행 중 필요한 하나 이상의 볼륨을 지정합니다.
이 섹션에서는 GitHub에서 애플리케이션의 소스 코드를 가져와 OpenShift Container Platform에서 빌드 및 배포하는 Pipeline을 생성합니다.
Pipeline은 백엔드 애플리케이션 vote-api
및 프런트 엔드 애플리케이션 vote-ui에
대해 다음 작업을 수행합니다.
-
git-url
및git-revision
매개변수를 참조하여 Git 리포지토리에서 애플리케이션의 소스 코드를 복제합니다. -
buildah
ClusterTask를 사용하여 컨테이너 이미지를 빌드합니다. -
image
매개변수를 참조하여 내부 이미지 레지스트리로 이미지를 푸시합니다. -
apply-manifests
및update-deployment
Task를 사용하여 OpenShift Container Platform에 새 이미지를 배포합니다.
프로세스
다음 샘플 Pipeline YAML 파일의 내용을 복사하여 저장합니다.
apiVersion: tekton.dev/v1beta1 kind: Pipeline metadata: name: build-and-deploy spec: workspaces: - name: shared-workspace params: - name: deployment-name type: string description: name of the deployment to be patched - name: git-url type: string description: url of the git repo for the code of deployment - name: git-revision type: string description: revision to be used from repo of the code for deployment default: "release-tech-preview-3" - name: IMAGE type: string description: image to be built from the code tasks: - name: fetch-repository taskRef: name: git-clone kind: ClusterTask workspaces: - name: output workspace: shared-workspace params: - name: url value: $(params.git-url) - name: subdirectory value: "" - name: deleteExisting value: "true" - name: revision value: $(params.git-revision) - name: build-image taskRef: name: buildah kind: ClusterTask params: - name: TLSVERIFY value: "false" - name: IMAGE value: $(params.IMAGE) workspaces: - name: source workspace: shared-workspace runAfter: - fetch-repository - name: apply-manifests taskRef: name: apply-manifests workspaces: - name: source workspace: shared-workspace runAfter: - build-image - name: update-deployment taskRef: name: update-deployment workspaces: - name: source workspace: shared-workspace params: - name: deployment value: $(params.deployment-name) - name: IMAGE value: $(params.IMAGE) runAfter: - apply-manifests
Pipeline 정의는 Git 소스 리포지토리 및 이미지 레지스트리의 세부 사항을 요약합니다. 이러한 세부 사항은 Pipeline이 트리거되고 실행될 때
params
로 추가됩니다.Pipeline을 생성합니다.
$ oc create -f <pipeline-yaml-file-name.yaml>
또는 Git 리포지토리에서 직접 YAML 파일을 실행할 수도 있습니다.
$ oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/release-tech-preview-3/01_pipeline/04_pipeline.yaml
tkn pipeline list
명령을 사용하여 Pipeline이 애플리케이션에 추가되었는지 확인합니다.$ tkn pipeline list
build-and-deploy
Pipeline이 생성된 것이 출력에서 확인됩니다.NAME AGE LAST RUN STARTED DURATION STATUS build-and-deploy 1 minute ago --- --- --- ---