Tekton 파이프라인의 환경 속성 및 리소스

IBM Cloud® Continuous Delivery 의 Tekton PipelineRun 에서는 기본적으로 다음과 같은 정보와 리소스를 이용할 수 있습니다.

PipelineRun 주석(Annotation)

표 1에서는 Tekton PipelineRun 에 포함된 어노테이션에 대해 설명합니다.

PipelineRun 어노테이션
어노테이션 실행 설명
devops.cloud.ibm.com/build-number 파이프라인의 빌드 번호입니다. 이 숫자는 모든 트리거의 파이프라인 실행의 누적 총계입니다.
devops.cloud.ibm.com/listener 이 파이프라인 실행을 시작한 트리거에 매핑된 Tekton eventlistener 입니다.
devops.cloud.ibm.com/pipeline-id 이 실행에 사용된 파이프라인의 고유 ID입니다.
devops.cloud.ibm.com/trigger-name 이 파이프라인 실행을 시작한 트리거의 이름입니다.
devops.cloud.ibm.com/trigger-type 이 파이프라인 실행을 시작한 트리거의 유형입니다. 유형은 manual, timer, scm 또는 generic일 수 있습니다.
devops.cloud.ibm.com/triggered-by 트리거를 시작한 사용자입니다. 이 값은 manual 트리거의 경우 ‘실행’을 누른 사용자의 IBMId, timer 트리거의 경우 트리거를 마지막으로 저장한 사용자의 IBMId, scm 트리거의 경우 ‘ Git ’ 작업을 수행한 사용자의 IBMId 중 하나입니다. generic 트리거의 경우 이 값은 공백입니다.
devops.cloud.ibm.com/pipeline-run-url 이 파이프라인 실행을 위한 세부사항 페이지의 URL입니다.
devops.cloud.ibm.com/tekton-pipeline 이 파이프라인 실행의 고유 ID입니다.

어노테이션에 액세스

파이프라인 정의 yaml 파일 내의 태스크에서 어노테이션에 액세스할 수 있습니다. 다음 예제는 devops.cloud.ibm.com/build-number 어노테이션에 액세스하는 방법을 보여줍니다. 해당 어노테이션을 환경 변수로 제공하려면, 이를 표 1에 나열된 실행 어노테이션 중 하나로 대체하십시오. PipelineRun 어노테이션.

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: simple-task
spec:
  steps:
    - name: simple-step
      image: icr.io/continuous-delivery/pipeline/pipeline-base-image:2.69
      env:
        - name: BUILD_NUMBER
          valueFrom:
            fieldRef:
              fieldPath: metadata.annotations['devops.cloud.ibm.com/build-number']
      command: ["bash", "-c"]
      args:
        - echo $BUILD_NUMBER;
          echo "COMPLETED"

PipelineRun ConfigMap 및 Secret

Continuous Delivery 의 Tekton PipelineRun 리소스는 작업에서 사용할 수 있는 특정 ConfigMap 및 Secret 객체를 생성합니다. 다음 표에는 각 객체에 대한 설명이 나와 있습니다.

PipelineRun ConfigMaps 그리고 비밀
오브젝트 유형 설명
environment-properties ConfigMap 보안되지 않은 모든 파이프라인 속성이 포함되어 있습니다. 키들은 전달 파이프라인의 ‘속성’ 페이지에 정의된 속성 이름들입니다.
secure-properties Secret 선택한 필드에 보안 값이 포함된 모든 ‘ Tool integration ’ 속성을 포함하여, 모든 보안 파이프라인 속성이 포함됩니다. 키들은 전달 파이프라인의 ‘속성’ 페이지에 정의된 속성 이름들입니다.
event-parameters ConfigMap scm 및 generic 트리거 유형에 대한 트리거 이벤트 데이터를 포함합니다. eventHeader 키에는 수신 이벤트의 HTTP 헤더가 저장되어 있으며, eventBody 키에는 이벤트 페이로드 본문이 저장되어 있습니다. 이 ConfigMap 는 선택 사항이며, manual 또는 timer 트리거의 경우 포함되지 않습니다.
toolchain ConfigMap 툴체인과 그 통합 사항을 설명하는 툴체인 정의 파일이 포함되어 있습니다.

ConfigMap 또는 Secret에 액세스하는 경우에는 파이프라인이 성공적으로 완료될 수 있도록 반드시 올바른 오브젝트 이름과 참조를 찾으십시오.

개별 값에 액세스

Task 내에서 개별 키-값에 액세스할 수 있습니다. 다음 코드 조각에서는 샘플 속성 이름인 ‘ apikey ’(보안 속성 포함)과 ‘ environment ’(텍스트 속성 포함)을 사용합니다. 이러한 속성 이름은 배포 파이프라인의 [ 속성 ] 페이지에서 설정됩니다.

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: cm-echo-props
spec:
  steps:
    - name: cm-show-props
      image: icr.io/continuous-delivery/pipeline/pipeline-base-image:2.69
      env:
        - name: SECURE_VALUE
          valueFrom:
            secretKeyRef:
              name: secure-properties
              key: apikey
        - name: ENVIRONMENT
          valueFrom:
            configMapKeyRef:
              name: environment-properties
              key: environment
      command: ["/bin/bash", "-c"]
      args:
        - echo -e "environment from ConfigMap is >>";
          echo $ENVIRONMENT;
          echo "";
          echo -e "apikey from Secrets is >>";
          echo $SECURE_VALUE

모든 값에 액세스

ConfigMap 및 Secret 에 있는 모든 키-값 쌍을 Task 환경에 추가할 수 있습니다. 다음 예제에서도 event-parameters ConfigMap 을 볼륨으로 마운트하여 트리거 이벤트의 헤더와 본문에 액세스합니다. event-parameters 는 scm 및 generic 트리거에서만 존재하므로, manual 또는 timer 트리거로 실행되는 경우 작업이 실패하지 않도록 이 볼륨은 선택 사항으로 표시됩니다.

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: cm-secrets-props
spec:
  steps:
    - name: cm-show-full-env
      image: icr.io/continuous-delivery/pipeline/pipeline-base-image:2.69
      envFrom:
        - configMapRef:
            name: environment-properties
        - secretRef:
            name: secure-properties
      volumeMounts:
        - mountPath: /event-parameters
          name: event-parameters
      command: ["/bin/bash", "-c"]
      args:
        - echo -e "The environment for this Step is ";
          env;
          echo "";
          echo -e "Event header is >>";
          cat /event-parameters/eventHeader || echo "No event header available";
          echo "";
          echo -e "Event body is >>";
          cat /event-parameters/eventBody || echo "No event body available"
  volumes:
    - name: event-parameters
      configMap:
        name: event-parameters
        optional: true

관리형 워커 가상 머신 크기 조정

IBM 관리형 워커 풀을 사용하여 파이프라인을 실행하면, 특정 기본 메모리 용량을 가진 VM 가 할당됩니다. 대부분의 작업은 제공된 메모리로도 성공적으로 실행할 수 있지만, 특정 파이프라인은 집약적인 작업을 위해 추가 메모리가 필요합니다.

사용자는 태스크에 특정 태스크에 대해 더 많은 (또는 적은) 메모리가 필요한지 여부를 표시하기 위해 태스크에 레이블을 지정할 수 있습니다. 필요한 자원의 특정 양을 식별하는 이 기능은 자원 사용 및 궁극적인 비용 절감에 도움이 됩니다.

Tekton 파이프라인 내의 특정 작업에 어떤 ‘ VM ’ 프로필을 적용할지 지정하려면, 해당 작업에 ‘ runtimeClassName ’ 레이블을 추가하고 다음 ‘ VM ’ 값 중 하나를 지정하십시오. 레이블이 지정되지 않은 경우, 기본 ‘ VM ’ 프로필이 사용됩니다.

  • small: 2Gi
  • medium: 4Gi (기본값)
  • large: 8Gi

예를 들어, 다음과 같습니다.

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: task1
  labels:
    runtimeClassName: medium
    and so on.

PipelineRun 에서 TriggerTemplate 의 일부로 동일한 구성을 지정할 수도 있습니다. PipelineRun 에서 ‘ runtimeClassName ’을 지정하면, 사용자는 작업 정의를 변경하지 않고도 사용하고자 하는 ‘ VM ’ 프로필을 선택할 수 있습니다.

예를 들어, 다음과 같습니다.

apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
  generateName: pipeline-run-
spec:
  pipelineRef:
    name: pipeline
  taskRunSpecs:
    - pipelineTaskName: task1
      taskPodTemplate:
        runtimeClassName: medium

로그 형식

이 섹션에서는 PipelineRun 세부정보 페이지에서 제공하는 로그 뷰어의 특징과 기능, 그리고 이러한 기능을 활용하기 위해 지원되는 로그 형식에 대해 설명합니다.

기본 기능

로그 뷰어는 ANSI 색상 코드와 텍스트 스타일을 지원하며, 로그 콘텐츠의 URL을 자동으로 감지하여 클릭 가능한 링크가 새 창에서 열리는 형태로 렌더링합니다.

도구 모음

로그 뷰어에 표시되는 툴바에는 다음과 같은 여러 가지 추가 기능이 포함되어 있습니다:

  • 최대화: 작업 목록과 실행 헤더를 숨겨서 로그 뷰어에서 사용할 수 있는 영역을 늘립니다. 이를 통해 사용자는 앱의 다른 부분에서 방해 요소를 제거하고 로그 콘텐츠에 집중할 수 있습니다.
  • 사용자 환경설정: 브라우저에 로컬로 유지되며 앱의 모든 로그에 적용됩니다. 세부사항은 다음 절을 참조하십시오.

시간소인

IBM-관리형 워커와 에이전트 버전이 0.20.5 이상인 개인 워커는 기본적으로 타임스탬프가 접두사로 붙은 로그 행을 생성합니다. 사용자는 로그 뷰어 툴바의 설정 메뉴에서 옵션을 토글하여 로그 뷰어에서 이러한 타임스탬프를 표시하거나 숨길 수 있습니다.

표시되는 타임스탬프는 사용자의 브라우저 설정에 따라 현지화되며, 마우스오버 시 툴팁으로 워커로부터 받은 원시 타임스탬프 값이 제공됩니다.

로그 레벨

로그 뷰어는 로그 줄을 구문 분석하여 연관된 로그 수준을 감지하고 그에 따라 로그 소모성을 돕기 위해 로그 줄을 장식합니다. 지원되는 형식은 다음과 같습니다.

<timestamp> ::<level>::<message>
  • timestamp 작업자가 제공
  • level 는 warning,, notice, info debug,, 중 error 하나이다. trace
    • debug 그리고 trace 로그 파일은 기본적으로 숨겨져 있습니다
    • 명시적인 level 이 없는 모든 로그 행은 info 으로 간주되지만 사용자가 지원되는 로그 형식을 사용하지 않는 UI에서 중복을 피하기 위해 로그 수준 배지를 표시하지 않습니다
  • message 는 줄에 있는 다른 콘텐츠이며 서식 지정 등을 위한 ANSI 코드를 포함할 수 있습니다.

예를 들어 다음 스니펫은 warning 수준의 로그 행을 출력합니다:

echo '::warning::Something that may require attention but is non-blocking…'

표시되는 로그 수준은 로그 뷰어 툴바의 설정 메뉴를 통해 변경할 수 있습니다.

로그 그룹

로그 뷰어는 로그 수준 외에도 로그 내에서 접을 수 있는 그룹도 지원합니다. 지원되는 형식은 다음과 같습니다.

<timestamp> ::group::<message>
…
<timestamp> ::endgroup::

group 명령은 그룹의 시작을 표시합니다. message 의 콘텐츠는 그룹의 현재 상태(예: 확장 또는 축소)를 나타내는 지표와 함께 그룹의 제목/요약으로 표시됩니다. 요약을 클릭하면 그룹 상태가 전환됩니다.

그룹은 로그를 볼 때 단계가 아직 진행 중이 아닌 한 기본적으로 접힌 상태로 렌더링됩니다. 사용자는 원하는 대로 그룹을 펼치거나 접을 수 있으며, 사용자가 다른 보기로 이동할 때까지 그룹 상태가 유지됩니다.

로그 그룹은 같은 줄에 로그 수준과 혼합할 수 없으며, group, endgroup 및 로그 수준 명령은 상호 배타적입니다. 그러나 그룹 내에 포함된 로그는 로그 수준을 정상적으로 사용할 수 있습니다.

중첩된 그룹은 지원되지 않습니다. group 명령은 이전에 종료되지 않은 모든 그룹을 암시적으로 종료합니다.

예를 들어 다음 코드조각은 info 수준의 여러 메시지가 포함된 요약 '추가 구성'이 있는 로그 그룹을 출력합니다:

echo '::group::Additional config'
echo 'This extends the base config'
echo '::info:: More info about the config…'
echo '::endgroup::'

Tekton Delivery Pipeline에 대해 자세히 알아보기

Tekton및 Continuous Delivery에 대해 자세히 알아보려면 Tekton: A Modern Approach to Continuous Delivery를 참조하십시오.