gitlab-org/gitlab
프로젝트 병합 요청 테스트omnibus-gitlab
프로젝트 MR 테스트- 특정 브랜치 또는 GitLab 구성요소 버전 사용
- GitLab 구성요소의 특정 미러 또는 포크 사용
- 다른 운영 체제용 패키지 빌드
GitLab 팀원 가이드: 공식 빌드 인프라 사용하기
만약 GitLab 팀원이라면, 빌드 인프라에 액세스하거나 해당 인프라에 액세스 권한이 있는 동료를 통해 패키지 빌드에 액세스할 수 있습니다.
gitlab-org/gitlab
프로젝트 병합 요청 테스트
gitlab-org/gitlab
프로젝트에 MR(병합 요청)이 있다면 해당 MR을 패키지나 Docker 이미지를 사용하여 테스트할 수 있습니다.
MR에 해당하는 CI 파이프라인에서, qa
단계의 e2e:test-on-omnibus
작업을 실행하여 다음을 트리거하세요:
-
omnibus-gitlab
QA 미러에서 하위 파이프라인을 실행하여 Ubuntu 22.04 패키지 및 단일 Docker 이미지를 제공합니다. - 이러한 아티팩트를 활용하여
gitlab-qa
실행합니다.
omnibus-gitlab
프로젝트 MR 테스트
omnibus-gitlab
프로젝트에 MR이 있다면 해당 MR을 패키지 또는 Docker 이미지를 사용하여 테스트할 수 있습니다.
GitLab
프로젝트와 유사하게, omnibus-gitlab
의 MR에 대한 파이프라인도 패키지나 Docker 이미지를 얻기 위한 수동 작업들이 있습니다. Trigger:ce-package
및 Trigger:ee-package
작업은 CE 및 EE 패키지 및 Docker 이미지를 빌드하고 QA를 실행합니다.
특정 브랜치 또는 GitLab 구성요소 버전 사용
GitLab Rails
또는 Gitaly
와 같은 기본 GitLab 구성요소의 버전은 다음에 의해 제어됩니다:
-
omnibus-gitlab
리포지토리 내의*_VERSION
파일. - 빌드 중에 존재하는
*_VERSION
환경 변수.
자세한 내용은 다음 표를 확인하세요:
파일 이름 | 환경 변수 | 설명 |
---|---|---|
VERSION
| GITLAB_VERSION
| GitLab Rails 애플리케이션의 Git 참조를 제어합니다. 기본적으로 GitLab-FOSS 리포지토리의 master 브랜치를 가리킵니다. GitLab 리포지토리를 사용하려면 환경 변수 ee 를 true로 설정하세요.
|
GITALY_SERVER_VERSION
| GITALY_SERVER_VERSION
| Gitaly 리포지토리의 Git 참조입니다. |
GITLAB_PAGES_VERSION
| GITLAB_PAGES_VERSION
| GitLab Pages 리포지토리의 Git 참조입니다. |
GITLAB_SHELL_VERSION
| GITLAB_SHELL_VERSION
| GitLab Shell 리포지토리의 Git 참조입니다. |
GITLAB_ELASTICSEARCH_INDEXER_VERSION
| GITLAB_ELASTICSEARCH_INDEXER_VERSION
| GitLab Elasticsearch Indexer 리포지토리의 Git 참조입니다. EE 빌드에서만 사용됩니다. |
GITLAB_KAS_VERSION
| GITLAB_KAS_VERSION
| GitLab Kubernetes Agent Server 리포지토리의 Git 참조입니다. |
GitLab MR에서 e2e:test-on-omnibus
작업을 실행하는 경우, GITLAB_VERSION
환경 변수는 해당 파이프라인에 해당하는 커밋 SHA로 설정됩니다. 다른 환경 변수는 명시되지 않은 경우에는 해당하는 파일에서 생성되어 트리거된 파이프라인으로 전달됩니다.
참고:
환경 변수는 *_VERSION
파일보다 우선합니다.
임시로 구성요소 버전 지정
임시로 구성요소 버전을 지정하는 방법은 다음 중 하나를 사용할 수 있습니다:
-
*_VERSION
파일을 편집하여 커밋하고, MR을 병합 준비 상태로 표시하기 전에 해당 변경 사항을 되돌립니다. MR에서 이 차이에 대한 미해결 논의를 시작하는 것을 권장합니다. -
.gitlab-ci.yml
파일에서 환경 변수를 설정하여 커밋하고 푸시하여 파이프라인을 시작하고, MR을 병합 준비 상태로 표시하기 전에 해당 변경 사항을 되돌립니다. MR에서 이 차이에 대한 미해결 논의를 시작하는 것을 권장합니다. -
Git 푸시 옵션으로 환경 변수를 전달합니다.
git push <REMOTE> -o ci.variable="<ENV_VAR>=<VALUE>"
# 여러 변수 전달
git push <REMOTE> -o ci.variable="<ENV_VAR_1>=<VALUE_1>" -o ci.variable="<ENV_VAR_2>=<VALUE_2>"
참고: 이 작업은 푸시할 변경 사항이 있는 경우에만 작동합니다. 원격이 로컬 브랜치와 이미 업데이트된 경우 새 파이프라인이 생성되지 않습니다.
- UI에서 직접 파이프라인을 실행하면서 환경 변수를 지정합니다.
환경 변수는 QA 미러 내에서 트리거된 하위 파이프라인으로 전달되어 빌드 중에 사용됩니다.
*_VERSION
파일을 변경하고 다시 되돌릴 필요 없이 환경 변수를 사용하는 것이 좋습니다. *_VERSION
파일은 omnibus-gitlab
의 반복된 패키지 빌드가 필요하고 변경 사항이 GitLab 구성요소만 있을 때 가장 효율적입니다. 해당 파일을 변경한 후 파이프라인이 실행되면 새로운 파이프라인을 수동으로 다시 실행하는 대신 변경 사항을 반영한 새 패키지를 빌드할 수 있습니다.
GitLab 구성요소의 특정 미러 또는 포크 사용
Omnibus가 빌드하는 대부분의 소프트웨어의 리포지토리 소스는 omnibus-gitlab
리포지토리의 .custom_sources.yml
파일에 있습니다. 주요 GitLab 구성요소를 환경 변수를 사용하여 재정의할 수 있습니다. 자세한 내용은 아래 표를 확인하세요:
환경 변수 | 설명 |
---|---|
ALTERNATIVE_PRIVATE_TOKEN
| 비공개 리포지토리에서 끌어오기 위한 액세스 토큰입니다. |
GITLAB_ALTERNATIVE_REPO
| GitLab Rails 애플리케이션의 Git 리포지토리 위치입니다. |
GITLAB_SHELL_ALTERNATIVE_REPO
| GitLab Shell의 Git 리포지토리 위치입니다. |
GITLAB_PAGES_ALTERNATIVE_REPO
| GitLab Pages의 Git 리포지토리 위치입니다. |
GITALY_SERVER_ALTERNATIVE_REPO
| Gitaly의 Git 리포지토리 위치입니다. |
GITLAB_ELASTICSEARCH_INDEXER_ALTERNATIVE_REPO
| GitLab Elasticsearch Indexer의 Git 리포지토리 위치입니다. |
GITLAB_KAS_ALTERNATIVE_REPO
| GitLab Kubernetes Agent Server의 Git 리포지토리 위치입니다. |
다른 운영 체제용 패키지 빌드
필수 조건:
-
omnibus-gitlab
릴리스 미러에 브랜치를 푸시할 수 있는 권한이 있어야 합니다:https://dev.gitlab.org/gitlab/omnibus-gitlab
.
릴리스 미러 사용 방법:
- Ubuntu 22.04 이외의 운영 체제용 패키지 빌드
- 변경 내용이 포함된 패키지가 모든 운영 체제에서 빌드될 수 있도록 보장
다른 운영 체제용 패키지 빌드 방법:
-
이전 섹션에서 지정된대로
*_VERSION
파일이나 환경 변수를 필요에 따라 수정합니다. CI configuration에서ee
환경 변수를true
로 설정하여 GitLab 저장소의 커밋을 GitLab-FOSS 대신 사용할 수 있습니다. -
릴리스 미러에 브랜치를 푸시하고, 파이프라인을 확인합니다:
https://dev.gitlab.org/gitlab/omnibus-gitlab/-/pipelines
. -
해당 파이프라인은 모든 지원되는 운영 체제 및 Docker 이미지용 패키지를 빌드합니다.