Omnibus GitLab에 새 소프트웨어 정의 추가하기

GitLab에 새 컴포넌트를 추가하려면 다음 단계를 따르십시오:

  1. 빌드 중 소프트웨어 가져오기 및 컴파일하기
  2. 소프트웨어 정의에 대한 종속성을 다른 컴포넌트에 추가하기

빌드 중 소프트웨어 가져오기 및 컴파일하기

소프트웨어 정의/config/software에 위치하며 omnibus가 소프트웨어를 가져오는 위치, 어떻게 컴파일하고 필요한 폴더에 설치할지 지정합니다. 이 프로젝트의 이 부분은 GitLab의 Omnibus 패키지를 빌드할 때 실행됩니다.

Git에서 가져와야 하는 컴포넌트를 추가할 때는 로컬 미러와 업스트림의 리포지토리 클론 주소를 /.custom_sources.yml에 추가해야 합니다.

로컬 미러는 배포 팀의 구성원에 의해 omnibus-mirror 프로젝트에서 만들어져야 합니다.

소프트웨어 서비스를 포함하는 방법의 예를 보려면 디렉토리에서 다른 소프트웨어 서비스를 참조하세요.

라이선스 처리하기

대부분의 소프트웨어 리포지토리에는 라이선스 파일이 포함되어 있습니다. 명시적으로 포함되어 있지 않은 경우 패치 파일을 사용하여 라이선스를 추가하십시오. gem 또는 pip와 같은 패키지 관리자를 사용하여 설치된 소프트웨어도 이 방법을 사용해야 합니다.

수동으로 추가된 라이선스에 대해 패치 만들기 를 하고, 다음 명명 규칙에 따라 config/patches/SOFTWARE_NAME/license/VERSION_NUMBER/add-license-file.patch 경로에 저장하세요.

라이선스는 프로젝트의 수명 동안 변경될 수 있습니다. 이 방법은 의도적으로 구축 실패를 유도하여 기여자에게 수동으로 설치된 라이선스를 확인하도록 상기시킵니다. 라이선스가 변경되지 않았다면 git mv를 사용하여 패치 파일이 포함된 VERSION_NUMBER 디렉토리를 새 VERSION_NUMBER로 이동하십시오.

소프트웨어 정의에 대한 종속성을 다른 컴포넌트에 추가하기

/config/projects/gitlab.rb에 있는 GitLab 프로젝트 정의에 dependency 문장을 추가하십시오. 보다 구체적인 컴포넌트의 종속성이 있는 경우를 제외하고는 (예: gitlab-rails에만 필요한 컴포넌트를 위해 config/software/gitlab-rails.rb 사용)

Omnibus는 종속적 컴포넌트를 먼저 빌드한 후, /config/projects/gitlab.rb에 있는 순서대로 다른 컴포넌트를 빌드합니다. 따라서 소프트웨어 컴포넌트 A가 다른 소프트웨어 B의 종속성으로 지정되면 A는 프로세스 초기에 빌드됩니다. A가 자주 변경되는 컴포넌트인 경우, 캐시가 자주 무효화되어 후속 모든 컴포넌트가 다시 빌드되어 전체 빌드 시간이 증가할 수 있습니다. 해결 방법은 A가 B 바로 전에 빌드되도록 하여 캐시 무효화를 피하는 것입니다.

  1. 소프트웨어 B 바로 전에 /config/projects/gitlab.rb에 소프트웨어 A를 추가하십시오.

    이제 A와 B는 프로젝트의 최상위 종속성이므로, omnibus는 /config/projects/gitlab.rb 내의 순서대로 빌드할 것입니다.

  2. B의 소프트웨어 정의에 다음과 유사한 줄을 추가하십시오.

    dependency '<name of software A>' unless project.dependencies.include?('<name of software A>')
    

    위의 코드는 프로젝트가 /config/projects/gitlab.rb에서 빌드되지 않을 때마다 A를 B의 종속성으로 지정하고 B보다 먼저 빌드되도록 합니다. 그러나 /config/projects/gitlab.rb에서 빌드할 경우에는 효과가 없습니다.

단일 소프트웨어 종속성 변경 검증하기

전체 패키지를 매번 다시 빌드하는 대신 소프트웨어의 한 부분만 빌드하는 것이 유용할 수 있습니다. 예를 들어, 새 소프트웨어 정의를 추가할 때 이 방법을 사용할 수 있습니다. 이 방법을 사용하면 소프트웨어와 그 종속성만 포함하는 omnibus 패키지를 빠르게 재빌드할 수 있습니다. 소프트웨어가 단독으로 빌드되는 것을 확인한 후, Omnibus GitLab 빌드에 추가하고 그곳에서 확인할 수 있습니다. 사용 방법:

  1. 개발 환경 설정하기
  2. 여러분의 프로젝트에 simple.rb 파일을 복사하십시오.

    cp doc/development/examples/simple.rb config/projects/
    
  3. 테스트 중인 소프트웨어에 맞게 config/projects/simple.rb에서 dependency를 변경하십시오.

  4. 다음 명령어를 실행하여 간단한 프로젝트를 빌드하십시오.

    bundle exec omnibus build simple