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-1
및 component-job-2
두 개의 작업을 추가합니다.
3. CI에서 변경 사항 테스트
컴포넌트에 푸시된 모든 변경 사항을 테스트하기 위해 루트 디렉토리에 .gitlab-ci.yml
을 생성하세요:
##
# 이 구성은 'API_TOKEN'이라는 이름의 마스킹된 CI/CD 변수에 저장된 읽기 전용 API 액세스 토큰을 기대합니다.
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
# 프로젝트 설명이 존재하는지 확인합니다. 카탈로그에 리소스를 표시할 때 중요해질 것입니다.
check-description:
image: badouralix/curl-jq
script:
- |
route="https://gitlab.com/api/v4/projects/$CI_PROJECT_ID"
desc=`curl --silent --header "PRIVATE-TOKEN: $API_TOKEN" $route | jq '.description'`
if [ "$desc" = "null" ]; then
echo "Description not set. Please set a projet description"
exit 1
else
echo "Description set"
fi
# 저장소에 `README.md` 파일이 포함되어 있는지 확인합니다. 저장소 전체의 문서를 나타냅니다.
check-readme:
image: busybox
script: ls README.md || (echo "Please add a README.md file" && exit 1)
# 특정 규칙("v" + 숫자)에 맞게 릴리스를 태깅하고 이전 모든 확인 작업이 성공하면, 자동으로 릴리스를 생성합니다.
create-release:
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:latest
rules:
- if: $CI_COMMIT_TAG =~ /^v\d+/
script: echo "Creating release $CI_COMMIT_TAG"
release:
tag_name: $CI_COMMIT_TAG
description: "Release $CI_COMMIT_TAG of components repository $CI_PROJECT_PATH"
이 파이프라인은 다음과 같은 여러 작업 예제를 포함합니다:
- 컴포넌트를 사용하여 최종 구성이 유효한 구문을 사용하는지 확인합니다. 이는 또한 컴포넌트가 작동하기 위한 최소 요구 사항이 갖춰져 있는지 확인합니다.
- 만들어진 파이프라인이 기대한 특성을 가지고 있는지 테스트합니다.
예를 들어
component-job-*
작업이 파이프라인에 추가되었는지 확인합니다.-
curl
을 사용하여 파이프라인 API 엔드포인트를 호출하고jq
를 사용하여 데이터를 구문 분석합니다. - 이 기술을 사용하면 사용자가 특정 작업이 포함되었는지, 작업에 올바른 속성이 설정되었는지, 또는 로그가 예상 출력을 포함하는지와 같은 사항을 확인할 수 있습니다.
-
- 프로젝트 설명이 설정되어 있는지 확인합니다.
- 저장소에
README.md
파일이 포함되어 있는지 확인합니다. - 자동으로 릴리스 생성합니다. 특정 정규 표현식을 따르는 태그가 생성되고 이전 확인 사항이 모두 통과된 경우.
4. 파이프라인 실행
이제 main
브랜치를 위해 새로운 파이프라인을 실행하세요. 변경 사항을 푸시하거나 수동으로 파이프라인을 실행할 수 있습니다:
5. 태그 생성
main
브랜치의 파이프라인이 성공적으로 완료되었으므로 이제 첫 번째 태그를 만들 수 있습니다: v1.0
.
v1.0
태그가 생성되면 새로운 태그 파이프라인이 시작됩니다.
이번에는 파이프라인에 릴리스
단계에서 create-release
작업이 포함되어 있습니다:
create-release
작업이 완료되면 새 릴리스가 릴리스 메뉴에서 확인 가능할 것입니다:
6. 저장소를 카탈로그에 공개
구성 요소 저장소와 새 릴리스가 CI Catalog에 모두 표시되도록 하려면 공개해야 합니다.
구성 요소 저장소를 공개하면 카탈로그 자원이 됩니다.
이 작업을 위한 API 엔드포인트는 개발 중에 있습니다. 자세한 내용은 이슈를 읽어보세요.