로컬에서 omnibus-gitlab 패키지 빌드하기

빌드 환경 준비

omnibus-gitlab 패키지를 빌드하는 데 필요한 빌드 도구를 포함한 도커 이미지는 GitLab Omnibus Builder 프로젝트의 컨테이너 레지스트리에 있습니다.

  1. Docker 설치.

    컨테이너는 빌드를 완료하려면 4GB의 메모리에 액세스해야 합니다. 컨테이너 런타임에 대한 설명서를 참조하세요. Docker for Mac 및 Docker for Windows는 기본 설치 시 이 값을 2GB로 설정하는 경우가 있습니다.

  2. 원하는 OS용 Docker 이미지를 가져옵니다. omnibus-gitlab에서 현재 공식적으로 사용하는 이미지의 버전은 CI configurationBUILDER_IMAGE_REVISION 환경 변수에 기재되어 있습니다.

    docker pull registry.gitlab.com/gitlab-org/gitlab-omnibus-builder/debian_10:${BUILDER_IMAGE_REVISION}
    
  3. Omnibus GitLab 소스를 복제하고 해당 디렉터리로 변경합니다.

    git clone https://gitlab.com/gitlab-org/omnibus-gitlab.git ~/omnibus-gitlab
    cd ~/omnibus-gitlab
    
  4. 컨테이너를 시작하고 해당 디렉터리를 컨테이너 내에 마운트한 후 쉘로 들어갑니다.

    docker run -v ~/omnibus-gitlab:/omnibus-gitlab -it registry.gitlab.com/gitlab-org/gitlab-omnibus-builder/debian_10:${BUILDER_IMAGE_REVISION} bash
    
  5. 기본적으로 omnibus-gitlab은 다양한 GitLab 컴포넌트의 소스를 가져오기 위해 공개 GitLab 리포지터리를 선택합니다. ALTERNATIVE_SOURCES 환경 변수를 false로 설정하여 dev.gitlab.org에서 빌드하도록 합니다.

    export ALTERNATIVE_SOURCES=false
    
  6. 기본적으로 omnibus-gitlab 코드베이스는 CI 환경에서 사용하도록 최적화되어 있습니다. 그중 하나는 GitLab CI 파이프라인에서 미리 컴파일된 Rails 에셋을 재사용하는 것입니다. 빌드에서 이를 활용하는 방법은 Upstream 에셋 가져오기 섹션을 확인하세요. 또는 COMPILE_ASSETS 환경 변수를 설정하여 패키지 빌드 중에 에셋을 컴파일할 수 있습니다.

    export COMPILE_ASSETS=true
    
  7. 기본적으로 XZ 압축은 최종 DEB 패키지를 생성하는 데 사용되며, 빌드 시간에 거의 증가 없이 패키지 크기를 Gzip 대비 거의 30% 줄일 수 있습니다. 그러나 시스템의 패키지 관리자도 해당 형식을 지원해야 합니다. 시스템의 패키지 관리자가 XZ 패키지를 지원하지 않으면 COMPRESS_XZ 환경 변수를 false로 설정하세요.

    export COMPRESS_XZ=false
    
  8. 라이브러리 및 기타 의존성을 설치합니다.

    cd /omnibus-gitlab
    bundle install
    bundle binstubs --all
    

Upstream 에셋 가져오기

GitLab 및 GitLab-FOSS 프로젝트의 파이프라인은 미리 컴파일된 에셋을 포함한 Docker 이미지를 생성하고 해당 이미지를 컨테이너 레지스트리에 게시합니다. 패키지를 빌드하는 동안, 시간을 절약하기 위해 이러한 이미지를 다시 사용할 수 있습니다. 에셋을 컴파일하는 대신 이러한 이미지를 재사용하세요.

  1. 생성하려는 GitLab 또는 GitLab-FOSS 버전에 해당하는 에셋 Docker 이미지를 가져옵니다. 예를 들어 최신 마스터 버전에 해당하는 에셋 이미지를 가져오려면 다음을 실행하세요.

    docker pull registry.gitlab.com/gitlab-org/gitlab/gitlab-assets-ee:master
    
  2. 해당 이미지를 사용하여 컨테이너를 생성합니다.

    docker create --name gitlab_asset_cache registry.gitlab.com/gitlab-org/gitlab/gitlab-assets-ee:master
    
  3. 컨테이너에서 호스트로부터 에셋 디렉터리를 복사합니다.

    docker cp gitlab_asset_cache:/assets ~/gitlab-assets
    
  4. 빌드 환경 컨테이너를 시작할 때, 해당 디렉터리를 마운트합니다.

    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
    
  5. COMPILE_ASSETS를 true로 설정하는 대신 에셋이 있는 경로를 설정하세요.

    export ASSET_PATH=/gitlab-assets
    

패키지 빌드

빌드 환경을 준비하고 필요한 변경을 완료한 후, 제공된 Rake 작업을 사용하여 패키지를 빌드할 수 있습니다.

  1. 빌드가 작동하려면 Git 작업 디렉터리가 깨끗해야 합니다. 따라서 새 브랜치에 변경 사항을 커밋하세요.

  2. 패키지를 빌드하려면 Rake 작업을 실행하세요.

     bundle exec rake build:project
    

패키지는 ~/omnibus-gitlab/pkg 디렉터리에 빌드되고 제공됩니다.

EE 패키지 빌드

기본적으로 omnibus-gitlab은 CE 패키지를 빌드합니다. EE 패키지를 빌드하려면 Rake 작업을 실행하기 전에 ee 환경 변수를 설정하세요.

export ee=true

빌드 중 생성된 파일 정리

omnibusclean 명령을 사용하여 빌드 프로세스 중에 생성된 모든 임시 파일을 정리할 수 있습니다.

bin/omnibus clean gitlab

--purge 옵션을 추가하면 프로젝트 설치 디렉터리(/opt/gitlab) 및 패키지 캐시 디렉터리(/var/cache/omnibus/pkg)를 포함한 모든 빌드 중에 생성된 파일을 제거합니다.

bin/omnibus clean --purge gitlab

Omnibus 도움말

Omnibus 명령줄 인터페이스에 대한 도움말은 다음 명령을 실행하여 확인할 수 있습니다.

bin/omnibus help