로컬에서 omnibus-gitlab
패키지 빌드하기
빌드 환경 준비
필요한 빌드 도구를 포함한 Docker 이미지로 omnibus-gitlab
패키지를 빌드하기 위한 준비가 된 프로젝트가 GitLab Omnibus Builder
프로젝트의 컨테이너 레지스트리에 있습니다.
-
컨테이너는 빌드를 완료하기 위해 4GB의 메모리에 액세스해야 합니다. 컨테이너 런타임에 대한 설명서를 참조하세요. Docker for Mac 및 Docker for Windows는 기본 설치에서 이 값을 2GB로 설정합니다.
-
패키지를 빌드하려는 OS용 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 저장소를 선택합니다.ALTERNATIVE_SOURCES
환경 변수를false
로 설정하여dev.gitlab.org
에서 빌드하도록 설정할 수 있습니다.export ALTERNATIVE_SOURCES=false
컴포넌트 소스 정보는
.custom_sources.yml
파일에 있습니다. -
기본적으로
omnibus-gitlab
코드베이스는 CI 환경에서 사용하기에 최적화되어 있습니다. 이러한 최적화 중 하나는 GitLab CI 파이프라인에서 미리 컴파일된 Rails 에셋을 재사용하는 것입니다. 빌드 중 이를 활용하는 방법을 확인하려면 Fetch upstream assets 섹션을 확인하세요. 또는 패키지 빌드 중에 에셋을 컴파일하도록 환경 변수COMPILE_ASSETS
를 설정할 수 있습니다.export COMPILE_ASSETS=true
-
기본적으로 DEB 패키지를 생성할 때 XZ 압축이 사용되어 패키지 크기가 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의 ref에 해당하는 에셋 Docker 이미지를 가져옵니다. 예를 들어 최신 master ref에 해당하는 에셋 이미지를 끌어오려면 다음을 실행하세요:
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 명령줄 인터페이스에 대한 도움말은 다음 명령을 실행하세요:
bin/omnibus help