This page contains information related to upcoming products, features, and functionality. It is important to note that the information presented is for informational purposes only. Please do not rely on this information for purchasing or planning purposes. The development, release, and timing of any products, features, or functionality may be subject to change or delay and remain at the sole discretion of GitLab Inc.
Status Authors Coach DRIs Owning Stage Created
proposed -

컴포넌트 리포지터리의 개발 워크플로우

요약

이 페이지는 컴포넌트 리포지터리를 생성하는 프로세스를 설명합니다. 프로젝트 생성부터 카탈로그 페이지에 새 릴리스가 표시되는 모든 필요한 단계를 설명합니다.

1. 새 프로젝트 생성

먼저 새 프로젝트를 만들고 README.md 파일을 추가하세요. 이것은 리포지터리가 카탈로그 리소스로 전환되기 위한 예정된 요구 사항입니다.

2. 리포지터리 내부에 컴포넌트 생성

만약 리포지터리에 하나의 컴포넌트만 있을 경우, 루트 디렉터리에서 정의할 수 있습니다. 그렇지 않으면, 컴포넌트를 위한 디렉터리를 만드세요. 자세한 내용은 컴포넌트 리포지터리의 디렉터리 구조를 참조하세요.

이 예시는 루트 디렉터리에서 하나의 컴포넌트를 정의합니다.

template.yml 파일을 만들어서 컴포넌트로 제공하려는 구성을 담아주세요:

spec:
  inputs:
    stage:
      default: test
---
.component-default-job:
  image: busybox
  stage: $[[ inputs.stage ]]

component-job-1:
  extends: .component-default-job
  script: echo job 1

component-job-2:
  extends: .component-default-job
  script: echo job 2

위의 예시 컴포넌트 구성은 파이프라인에 component-job-1component-job-2 두 개의 작업을 추가합니다.

3. CI에서 변경 사항 테스트

저희 컴포넌트에 푸시된 모든 변경 사항을 테스트하기 위해 루트 디렉터리에 .gitlab-ci.yml을 작성해주세요:

##
# 이 구성은 API에 대한 읽기 전용 액세스 토큰이 'API_TOKEN'이라는 마스크 처리된 CI/CD 변수로 저장되어 있다고 예상합니다.

include:
  # 현재 프로젝트와 SHA를 참조하는 미리 정의된 변수를 활용
  - component: gitlab.com/$CI_PROJECT_PATH@$CI_COMMIT_SHA

stages: [test, release]

# 모든 `component-job-*` 작업이 추가되었다고 예상
ensure-jobs-added:
  image: badouralix/curl-jq
  script:
    - |
      route="https://gitlab.com/api/v4/projects/$CI_PROJECT_ID/pipelines/$CI_PIPELINE_ID/jobs"
      count=`curl --silent --header "PRIVATE-TOKEN: $API_TOKEN" $route | jq 'map(select(.name | contains("component-job-"))) | length'`
      if [ "$count" != "2" ]; then
        exit 1
      fi
...

...

이 파이프라인에는 다양한 작업의 예시가 포함되어 있습니다:

  • 컴포넌트를 사용하여 최종 구성이 유효한 구문을 사용하는지 확인합니다. 또한, 작업이 필요한 최소 요구 사항을 충족하는지도 확인합니다.
  • 생성된 파이프라인이 기대한 특성을 가지고 있는지 테스트합니다. 예를 들어, component-job-* 작업이 파이프라인에 추가되었는지 확인합니다.
    • curl파이프라인 API 엔드포인트를 호출하고 jq를 통해 데이터를 구문 분석합니다.
    • 이 기술을 사용하여 특정 작업이 포함되었는지, 작업이 올바른 속성이 설정되어 있는지, 또는 로그에 기대한 출력이 포함되어 있는지 등을 확인할 수 있습니다.
  • 프로젝트 설명이 설정되어 있는지 확인합니다.
  • 리포지터리에 README.md 파일이 포함되어 있는지 확인합니다.
  • 특정 정규식을 따르는 태그를 생성하면 이전 모든 확인 사항이 통과한 후에 릴리스를 자동으로 작성합니다.

4. 파이프라인 실행

이제 main 브랜치를 위해 새 파이프라인을 실행해보세요. 변경을 푸시하거나 파이프라인을 매뉴얼으로 시작할 수 있습니다:

main 브랜치에서의 파이프라인

5. 태그 생성

main용 파이프라인이 성공하면 이제 첫 번째 태그인 v1.0만들 수 있습니다.

v1.0 태그가 만들어지면 새로운 태그 파이프라인이 시작됩니다. 이번에는 파이프라인에 release 단계의 create-release 작업이 추가되어 있습니다:

태그에서의 파이프라인

create-release 작업이 완료되면 릴리스 메뉴에서 새 릴리스를 확인할 수 있어야 합니다:

새로운 컴포넌트 리포지터리 릴리스

6. 리포지터리를 카탈로그에 게시

컴포넌트 리포지터리와 새 릴리스가 CI 카탈로그에 표시되도록 하려면 이를 게시해야 합니다.

이 게시를 통해 컴포넌트 리포지터리가 카탈로그 리소스로 만들어집니다.

이 작업의 API 엔드포인트는 개발 중입니다. 더 많은 세부 정보를 보려면 이슈를 확인하세요.