gitlab-org/gitlab
프로젝트 병합 요청 테스트omnibus-gitlab
프로젝트 MR 테스트- GitLab 구성 요소의 특정 브랜치 또는 버전 사용
- GitLab 구성 요소의 특정 미러 또는 포크 사용
- 다른 운영 체제를 위한 패키지 빌드
GitLab 팀원의 공식 빌드 인프라 사용 안내
GitLab 팀원이라면 빌드 인프라에 접근할 수 있는 권한이 있거나, 인프라에 접근할 수 있는 동료와 연결되어 있습니다. 이 접근 권한을 사용하여 패키지를 빌드할 수 있습니다.
gitlab-org/gitlab
프로젝트 병합 요청 테스트
gitlab-org/gitlab
프로젝트에 병합 요청(MR)이 있는 경우, 패키지나 Docker 이미지를 사용하여 해당 MR을 테스트할 수 있습니다.
MR에 해당하는 CI 파이프라인에서 qa
단계의 e2e:test-on-omnibus
작업을 실행하여 다음을 트리거합니다:
- Ubuntu 22.04 패키지와 테스트를 위한 올인원 Docker 이미지를 제공하는
omnibus-gitlab
QA 미러에서 다운스트림 파이프라인. - 이러한 아티팩트를 사용하는
gitlab-qa
실행도 포함됩니다.
omnibus-gitlab
프로젝트 MR 테스트
omnibus-gitlab
프로젝트에 MR이 있는 경우, 패키지나 Docker 이미지를 사용하여 해당 MR을 테스트할 수 있습니다.
GitLab
프로젝트와 유사하게, omnibus-gitlab
의 MRs에 대해 실행되는 파이프라인에도 패키지나 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 push option으로 환경 변수를 전달합니다.
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 구성 요소에만 해당됩니다. 이 경우, *_VERSION
파일을 변경한 후 파이프라인이 실행되면, 수동으로 새로운 파이프라인을 실행하는 대신 상류 구성 요소 기능 브랜치에서 변경 사항을 가져오도록 새로운 패키지를 빌드하는 데 재시도할 수 있습니다.
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
파일 또는 환경 변수를 수정합니다. GitLab-FOSS 대신 GitLab 리포지토리의 커밋을 사용하려면 CI 구성에서ee
환경 변수를true
로 설정하려고 할 수 있습니다. -
릴리스 미러에 브랜치를 푸시하고 파이프라인을 확인합니다:
https://dev.gitlab.org/gitlab/omnibus-gitlab/-/pipelines
. -
파이프라인은 모든 지원되는 운영 체제와 Docker 이미지를 위해 패키지를 빌드합니다.