로컬에서 omnibus-gitlab
패키지 빌드하기
빌드 환경 준비
omnibus-gitlab
패키지를 빌드하는 데 필요한 빌드 도구를 포함한 도커 이미지는 GitLab Omnibus Builder
프로젝트의 컨테이너 레지스트리에 있습니다.
-
컨테이너는 빌드를 완료하려면 4GB의 메모리에 액세스해야 합니다. 컨테이너 런타임에 대한 설명서를 참조하세요. Docker for Mac 및 Docker for Windows는 기본 설치 시 이 값을 2GB로 설정하는 경우가 있습니다.
-
원하는 OS용 Docker 이미지를 가져옵니다.
omnibus-gitlab
에서 현재 공식적으로 사용하는 이미지의 버전은 CI configuration의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
-
컨테이너를 시작하고 해당 디렉터리를 컨테이너 내에 마운트한 후 쉘로 들어갑니다.
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
-
기본적으로
omnibus-gitlab
코드베이스는 CI 환경에서 사용하도록 최적화되어 있습니다. 그중 하나는 GitLab CI 파이프라인에서 미리 컴파일된 Rails 에셋을 재사용하는 것입니다. 빌드에서 이를 활용하는 방법은 Upstream 에셋 가져오기 섹션을 확인하세요. 또는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
Upstream 에셋 가져오기
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 명령줄 인터페이스에 대한 도움말은 다음 명령을 실행하여 확인할 수 있습니다.
bin/omnibus help