Code Stream에서 CICD(지속적 통합 및 지속적 전달) 파이프라인을 생성하려는 경우 CICD 스마트 파이프라인 템플릿을 사용할 수 있습니다. CICD 네이티브 빌드를 계획하려면 이 예시 계획에서 파이프라인을 생성하기 전에 스마트 파이프라인 템플릿에 대한 정보를 수집합니다.

CICD 파이프라인을 생성하려면 파이프라인의 CI(지속적 통합) 단계와 CD(지속적 전달) 단계 둘 모두를 계획해야 합니다.

스마트 파이프라인 템플릿에 정보를 입력하고 저장하면 템플릿은 단계와 작업이 포함된 파이프라인을 생성합니다. 또한 선택한 환경 유형(예: Dev 및 Prod)에 기반하여 이미지의 배포 대상이 표시됩니다. 파이프라인은 컨테이너 이미지를 게시하고, 이것을 실행하는 데 필요한 작업을 수행합니다. 파이프라인 실행 후에는 파이프라인 실행 전반의 추세를 모니터링할 수 있습니다.

파이프라인에 Docker Hub의 이미지가 포함된 경우 파이프라인을 실행하기 전에 이미지에 cURL 또는 wget이 내장되어 있는지 확인해야 합니다. 파이프라인이 실행되면 Code StreamcURL 또는 wget을 사용하여 명령을 실행하는 이진 파일을 다운로드합니다.

업무 공간 구성에 대한 자세한 내용은 파이프라인 작업 공간 구성에서 참조하십시오.

CI(지속적 통합) 단계 계획

파이프라인의 CI 단계를 계획하려면 외부 및 내부 요구 사항을 설정하고, 스마트 파이프라인 템플릿의 CI 부분에 필요한 정보를 결정합니다. 다음은 요약 정보입니다.

이 예에서는 Docker 업무 공간을 사용합니다.

필요한 끝점 및 저장소:

  • 개발자가 코드를 체크인하는 소스 코드 저장소. 개발자가 변경 내용을 커밋하면 Code Stream은 가장 최신 코드를 파이프라인으로 풀합니다.
  • 개발자 소스 코드가 상주하는 저장소에 대한 GitHub-Enterprise, GitLab-Enterprise 또는 Bitbucket-Enterprise 서비스 유형 끝점.
  • 컨테이너 내부의 구축 명령을 실행할 Docker 구축 호스트에 대한 Docker 끝점
  • Code Stream이 이미지를 Kubernetes 클러스터에 배포하는 데 필요한 Kubernetes 끝점
  • 지속적 통합 테스트가 실행되는 컨테이너를 생성하는 빌더 이미지
  • Docker 구축 호스트가 빌더 이미지를 풀하는 데 필요한 이미지 레지스트리 끝점

프로젝트에 대한 액세스 권한이 필요합니다. 프로젝트는 파이프라인, 끝점, 대시보드를 포함하여 모든 작업을 그룹화합니다. Code Stream에서 프로젝트의 멤버인지 확인합니다. 그렇지 않으면 프로젝트 멤버로 추가해 달라고 Code Stream 관리자에게 요청합니다. Code Stream에서 프로젝트를 추가하는 방법의 내용을 참조하십시오.

개발자가 코드 변경 내용을 커밋할 때 Code Stream이 Git 트리거를 사용하여 파이프라인을 트리거할 수 있도록 하는 Git Webhook가 필요합니다. Code Stream에서 Git 트리거를 사용하여 파이프라인을 실행하는 방법의 내용을 참조하십시오.

구축 도구 집합

  • 구축 유형(예: Maven)
  • 사용하는 모든 처리 후 구축 도구(예: JUnit, JaCoCo, Checkstyle, FindBugs 등)

게시 도구

  • 구축 컨테이너를 배포할 도구(예: Docker)
  • 이미지 태그(커밋 ID 또는 빌드 번호)

구축 작업 공간

  • Docker 끝점인 Docker 구축 호스트
  • 이미지 레지스트리. 파이프라인의 CI 부분은 선택된 레지스트리 끝점에서 이미지를 풀합니다. 컨테이너는 CI 작업을 실행하고 이미지를 배포합니다. 레지스트리에 자격 증명이 필요한 경우에는 레지스트리 끝점을 생성한 후, 호스트가 레지스트리에서 이미지를 끌어올 수 있도록 여기에서 선택해야 합니다.
  • 지속적 통합 작업이 실행되는 컨테이너를 생성하는 빌더 이미지의 URL

CD(지속적 전달) 단계 계획

파이프라인의 CD 단계를 계획하려면 외부 및 내부 요구 사항을 설정하고, 스마트 파이프라인 템플릿의 CD 부분에 입력할 정보를 결정합니다.

필요한 끝점:

  • Code Stream이 이미지를 Kubernetes 클러스터에 배포하는 데 필요한 Kubernetes 끝점

환경 유형 및 파일

  • Code Stream이 애플리케이션을 배포할 모든 환경 유형(예: Dev 및 Prod). 스마트 파이프라인 템플릿은 사용자가 선택하는 환경 유형에 기반하여 파이프라인에 단계와 작업을 생성합니다.
    표 1. CICD 스마트 파이프라인 템플릿이 생성하는 파이프라인 단계
    파이프라인 컨텐츠 수행 작업
    구축-게시 단계 코드를 구축 및 테스트하고, 빌더 이미지를 생성하고, Docker 호스트에 이미지를 게시합니다.
    개발 단계 개발 AWS(Amazon Web Services) 클러스터를 사용하여 이미지를 생성하고 배포합니다. 이 단계에서는 클러스터에 네임스페이스를 생성하고 비밀 키를 생성할 수 있습니다.
    운영 단계 VMware Tanzu Kubernetes Grid Integrated Edition(이전 이름: VMware Enterprise PKS)의 운영 버전을 사용하여 이미지를 운영 Kubernetes 클러스터에 배포합니다.
  • CICD 스마트 파이프라인 템플릿의 CD 섹션에서 선택하는 Kubernetes YAML 파일.

    Kubernetes YAML 파일에는 네임스페이스, 서비스 및 배포에 대한 필수 섹션 3개와 비밀에 대한 선택적 섹션 1개가 포함되어 있습니다. 개인 소유 저장소에서 이미지를 다운로드하여 파이프라인을 생성하려는 경우 Docker 구성 비밀이 있는 섹션이 포함되어야 합니다. 생성하는 파이프라인이 공개적으로 사용 가능한 이미지만 사용하는 경우에는 비밀이 필요하지 않습니다. 다음 샘플 YAML 파일에는 4개의 섹션이 포함되어 있습니다.

    apiVersion: v1
    kind: Namespace
    metadata:
      name: codestream
      namespace: codestream
    ---  
    apiVersion: v1
    data:
      .dockerconfigjson: eyJhdXRocyI6eyJodHRwczovL2luZ1234567890lci5pby92MS8iOnsidXNlcm5hbWUiOiJhdXRvbWF0aW9uYmV0YSIsInBhc3N3b3JkIjoiVk13YXJlQDEyMyIsImVtYWlsIjoiYXV0b21hdGlvbmJldGF1c2VyQGdtYWlsLmNvbSIsImF1dGgiOiJZWFYwYjIxaGRHbHZibUpsZEdFNlZrMTNZWEpsUURFeU13PT0ifX19
    kind: Secret
    metadata:
      name: dockerhub-secret
      namespace: codestream
    type: kubernetes.io/dockerconfigjson
    ---   
    apiVersion: v1
    kind: Service
    metadata:
      name: codestream-demo
      namespace: codestream
      labels:
        app: codestream-demo
    spec:
      ports:
        - port: 80
      selector:
        app: codestream-demo
        tier: frontend
      type: LoadBalancer 
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: codestream-demo
      namespace: codestream
      labels:
        app: codestream-demo
    spec:
      replicas: 10
      selector:
        matchLabels:
          app: codestream-demo
          tier: frontend
      template:
        metadata:
          labels:
            app: codestream-demo
            tier: frontend
        spec:
          containers:
          - name: codestream-demo
            image: automationbeta/codestream-demo:01
            ports:
            - containerPort: 80
              name: codestream-demo
          imagePullSecrets:
          - name: dockerhub-secret

    스마트 템플릿에 파일을 적용하려면 선택을 클릭하고 Kubernetes YAML 파일을 선택합니다. 그런 다음 프로세스를 클릭합니다. 사용 가능한 서비스와 배포 환경이 스마트 파이프라인 템플릿에 표시됩니다. 서비스, 클러스터 끝점 그리고 배포 전략을 선택합니다. 예를 들어 카나리아 배포 모델을 사용하려면 카나리아를 선택하고 배포 단계의 백분율을 입력합니다.

    스마트 파이프라인 템플릿은 Canary, 롤링 업그레이드, 블루-그린 지속적 통합 및 지속적 전달 배포를 처리할 수 있습니다.

스마트 파이프라인 템플릿을 사용하여 블루-그린 배포를 위한 파이프라인을 생성하는 예를 보려면 Code Stream에서 애플리케이션을 블루-그린 배포에 배포하는 방법의 내용을 참조하십시오.

스마트 파이프라인 템플릿을 사용하여 CICD 파이프라인을 생성하는 방법

모든 정보를 수집하고 필요한 설정을 완료한 후에는 다음과 같은 방법으로 CICD 스마트 파이프라인 템플릿에서 파이프라인을 생성합니다.

[파이프라인]에서 새 파이프라인 > 스마트 템플릿을 선택합니다.

파이프라인을 생성할 때 스마트 파이프라인 템플릿을 사용할 수 있습니다.

CICD 스마트 파이프라인 템플릿을 선택합니다.

CICD 스마트 파이프라인 템플릿 카드를 클릭하여 지속적 통합 및 지속적 전달 파이프라인을 생성할 수 있습니다.

템플릿을 작성하고, 생성되는 단계와 함께 파이프라인을 저장합니다. 최종 변경 사항을 적용해야 하는 경우 파이프라인을 편집한 후 저장할 수 있습니다.

CICD 스마트 파이프라인 템플릿은 애플리케이션을 구축 및 게시하고 개발 및 운영 환경에 전달하는 단계로 파이프라인을 생성합니다.

그런 다음 파이프라인을 사용하도록 설정하고 실행합니다. 파이프라인이 실행된 이후 다음의 몇 가지 사항을 확인해야 합니다.

  • 파이프라인이 성공했는지 확인합니다. 실행을 클릭하고 파이프라인을 검색합니다. 실패했다면 오류를 수정하고 다시 실행합니다.
  • Git Webhook이 올바로 작동 중인지 확인합니다. Git 작업 탭은 이벤트를 표시합니다. 트리거 > Git > 작업을 클릭합니다.
  • 파이프라인 대시보드를 살펴보고 추세를 검토합니다. 대시보드를 클릭하고 파이프라인 대시보드를 검색합니다. 사용자 지정 대시보드를 생성하여 추가 KPI에 대해 보고할 수도 있습니다.

세부적인 예는 Code Stream에서 GitHub 또는 GitLab 저장소의 코드를 파이프라인에 지속적으로 통합하는 방법 항목을 참조하십시오.