로컬에서 omnibus-gitlab
패키지 빌드하기
빌드 환경 준비
omnibus-gitlab
패키지를 빌드하기 위한 필수 빌드 도구가 포함된 Docker 이미지가
GitLab Omnibus Builder
프로젝트의 컨테이너 레지스트리 에 있습니다.
-
Docker 엔진 설치하기.
- Docker 엔진은 필수 사항이며, Docker Desktop은 아닙니다.
- 알림: Mac용 Docker Desktop은 상업적 용도를 위해 유료 구독이 필요하며, 이는 Docker Subscription Service Agreement에 따릅니다. 대안을 고려하세요.
-
패키지를 빌드할 운영 체제에 대한 Docker 이미지를 가져옵니다. 현재
omnibus-gitlab
에서 공식적으로 사용되는 이미지 버전은 CI 구성에서BUILDER_IMAGE_REVISION
환경 변수로 참조됩니다.docker pull registry.gitlab.com/gitlab-org/gitlab-omnibus-builder/debian_10:${BUILDER_IMAGE_REVISION}
-
Omnibus GitLab 소스를 클론하고 클론된 디렉토리로 이동합니다:
git clone https://gitlab.com/gitlab-org/omnibus-gitlab.git ~/omnibus-gitlab cd ~/omnibus-gitlab
-
컨테이너를 시작하고 셸에 들어가며,
omnibus-gitlab
디렉토리를 컨테이너에 마운트합니다:docker run -v ~/omnibus-gitlab:/omnibus-gitlab -it registry.gitlab.com/gitlab-org/gitlab-omnibus-builder/debian_10:${BUILDER_IMAGE_REVISION} bash
-
기본적으로,
omnibus-gitlab
는 다양한 GitLab 구성 요소의 소스를 가져오기 위해 공개 GitLab 리포지토리를 선택합니다.dev.gitlab.org
에서 빌드하려면 환경 변수ALTERNATIVE_SOURCES
를false
로 설정합니다.export ALTERNATIVE_SOURCES=false
구성 요소 소스 정보는
.custom_sources.yml
파일에 있습니다. -
기본적으로,
omnibus-gitlab
코드베이스는 CI 환경에서 사용하기 위해 최적화되어 있습니다. 이러한 최적화 중 하나는 GitLab CI 파이프라인에 의해 빌드된 사전 컴파일된 Rails 자산을 재사용하는 것입니다. 이를 빌드에 활용하는 방법은 상위 자산 가져오기 섹션을 확인하세요. 또는COMPILE_ASSETS
환경 변수를 설정하여 패키지 빌드 중에 자산을 컴파일할 수 있습니다.export COMPILE_ASSETS=true
-
기본적으로, XZ 압축이 최종 DEB 패키지를 생성하는 데 사용되며, 이는 Gzip에 비해 패키지 크기를 거의 30% 줄이고 빌드 시간은 거의 증가하지 않으며 설치(압축 해제) 시간은 약간 증가합니다. 그러나 시스템의 패키지 관리자가 해당 형식을 지원해야 합니다. 시스템의 패키지 관리자가 XZ 패키지를 지원하지 않는 경우,
COMPRESS_XZ
환경 변수를false
로 설정합니다:export COMPRESS_XZ=false
-
라이브러리 및 기타 종속성을 설치합니다:
cd /omnibus-gitlab bundle install bundle binstubs --all
업스트림 자산 가져오기
GitLab 및 GitLab-FOSS 프로젝트의 파이프라인은 미리 컴파일된 자산으로 Docker 이미지를 생성하고 이 이미지를 컨테이너 레지스트리에 게시합니다. 패키지를 빌드할 때 시간을 절약하기 위해 자산을 다시 컴파일하는 대신 이러한 이미지를 재사용할 수 있습니다:
-
빌드 중인 GitLab 또는 GitLab-FOSS의 참조에 해당하는 자산 Docker 이미지를 가져옵니다. 예를 들어, 최신 마스터 참조에 해당하는 자산 이미지를 가져오려면 다음을 실행합니다:
docker pull registry.gitlab.com/gitlab-org/gitlab/gitlab-assets-ee:master
-
해당 이미지를 사용하여 컨테이너를 생성합니다:
docker create --name gitlab_asset_cache registry.gitlab.com/gitlab-org/gitlab/gitlab-assets-ee:master
-
컨테이너에서 호스트로 자산 디렉토리를 복사합니다:
docker cp gitlab_asset_cache:/assets ~/gitlab-assets
-
빌드 환경 컨테이너를 시작할 때 자산 디렉토리를 마운트합니다:
docker run -v ~/omnibus-gitlab:/omnibus-gitlab -v ~/gitlab-assets:/gitlab-assets -it registry.gitlab.com/gitlab-org/gitlab-omnibus-builder/debian_10:${BUILDER_IMAGE_REVISION} bash
-
COMPILE_ASSETS
를 true로 설정하는 대신 자산을 찾을 수 있는 경로를 설정합니다:export ASSET_PATH=/gitlab-assets
패키지 빌드
빌드 환경을 준비하고 필요한 변경 사항을 적용한 후에는 제공된 Rake 작업을 사용하여 패키지를 빌드할 수 있습니다:
-
빌드가 작동하려면 Git 작업 디렉토리가 깨끗해야 합니다. 따라서 변경 사항을 새 브랜치에 커밋하세요.
-
패키지를 빌드하기 위해 Rake 작업을 실행합니다:
bundle exec rake build:project
패키지는 빌드되고 ~/omnibus-gitlab/pkg
디렉토리에서 사용할 수 있게 됩니다.
EE 패키지 빌드
기본적으로 omnibus-gitlab
은 CE 패키지를 빌드합니다. EE 패키지를 빌드하려면 Rake 작업을 실행하기 전에 ee
환경 변수를 설정하세요:
export ee=true
빌드 중 생성된 파일 정리
빌드 과정 중에 생성된 모든 임시 파일을 omnibus
의 clean
명령을 사용하여 정리할 수 있습니다:
bin/omnibus clean gitlab
--purge
정리 옵션을 추가하면 프로젝트 설치 디렉토리(/opt/gitlab
)와 패키지 캐시 디렉토리(/var/cache/omnibus/pkg
)를 포함하여 빌드 중에 생성된 모든 파일이 제거됩니다:
bin/omnibus clean --purge gitlab
Omnibus에 대한 도움 얻기
Omnibus 명령줄 인터페이스에 대한 도움을 얻으려면 help
명령을 실행하세요:
bin/omnibus help