개발 환경 설정하기

리눅스 패키지의 개발은 다운로드 페이지에서 사용 가능한 기존 패키지를 사용하여 수행할 수 있습니다. 이러한 패키지를 빌드하고 사용하기 위한 빌드 환경을 설정하는 방법은 빌드 환경 설정을 참조하세요.

아래 GitLab 설치 방법 중 하나를 선택하세요. 변경 사항마다 패키지를 다시 빌드하는 것을 방지하고 격리를 제공하기 위해 개발에 컨테이너를 사용하는 것이 좋습니다.

컨테이너 설정

  1. 공식 Docker 설치 문서에 따라 OS에 Docker를 설치합니다.

  2. GitLab CE nightly 이미지를 가져옵니다:

    docker pull gitlab/gitlab-ce:nightly
    
  3. 쉘 프롬프트를 가진 Docker 이미지를 실행합니다:

    docker run -it --publish 443:443 --publish 80:80 --publish 22:22 gitlab/gitlab-ce:nightly bash
    

    이 명령어는 GitLab nightly 이미지를 사용하여 Docker를 실행합니다. 여기에서는 bash 프롬프트에서 다음 명령어를 실행합니다.

  4. runsv를 먼저 시작하고 reconfigure를 실행하여 GitLab을 초기화합니다:

    /opt/gitlab/embedded/bin/runsvdir-start &
    gitlab-ctl reconfigure
    

    reconfigure를 실행한 후 sysctl 오류가 발생하는 경우, 공통 설치 문제 문서에 해결 방법이 안내되어 있습니다.

  5. (선택 사항) 필요한 경우 컨테이너의 스냅샷을 찍어 나중에 해당 이미지로 복귀할 수 있도록 합니다. 이 명령어는 Docker 호스트에서 실행합니다:

    docker ps # 해당 컨테이너의 컨테이너 ID를 찾습니다.
    docker commit <container_id> gitlab_nightly_post_install
    

공식 nightly 패키지 사용

  1. Nightly Build repository에서 GitLab CE nightly 패키지를 가져와 해당 페이지에 제공된 지침에 따라 설치합니다.

    참고: Ubuntu Xenial에서는 tzdata를 설치해야 할 수 있습니다. 이 이슈는 #4769에서 보고되었습니다.

  2. GitLab을 구성하고 시작하세요.
  3. 호스트 브라우저에서 <호스트 IP 주소>로 GitLab 인스턴스에 액세스할 수 있는지 확인하세요.
  4. Omnibus GitLab을 개발하는 데 사용되는 기본 도구를 설치합니다:

    sudo apt-get install git
    

Omnibus GitLab의 소스 가져오기

  1. GitLab.com의 저장소에서 Omnibus GitLab의 소스 코드를 가져옵니다:

    git clone https://gitlab.com/gitlab-org/omnibus-gitlab.git ~/omnibus-gitlab
    

    여기서는 ~/omnibus-gitlab 디렉토리 내에서 개발 작업을 수행할 것입니다.

  2. GitLab에게 cookbooks에 대한 변경사항을 적용하도록 지시합니다.

    개발 중에 우리는 만든 변경사항이 설치 중에 제공되는 것이 아닌 바로 적용되도록 해야 합니다. 따라서 변경한 내용을 사용하는 대신 설치 중에 제공되는 것과는 다른 디렉토리에 symbolic link를 만들어야 합니다. 이를 위해 기존 cookbooks 디렉토리의 백업을 만들고 우리가 수정하는 디렉토리로 symbolic link를 걸어야 합니다:

    cd ~/omnibus-gitlab/files/gitlab-cookbooks
    for i in $(ls); do
      mv "/opt/gitlab/embedded/cookbooks/${i}" "/opt/gitlab/embedded/cookbooks/${i}.$(date +%s)"
      ln -s "$(pwd)/${i}" "/opt/gitlab/embedded/cookbooks/${i}"
    done
    

    이제 ~/omnibus-gitlab/files/gitlab-cookbooks/ 내부에서 cookbooks를 필요에 맞게 변경한 후 이러한 변경사항이 적용되도록 sudo gitlab-ctl reconfigure를 실행할 수 있습니다.

개발 환경에 대해 GitLab QA 실행하기

개발 인스턴스에서 GitLab QA 테스트를 실행할 수 있습니다.

이렇게 하면 새로운 작업이 예상대로 동작하고 다른 부분을 깨뜨리지 않는지 확인할 수 있습니다. 또한 작업 중인 내용을 유효성 검사하기 위해 자체 테스트를 추가할 수 있습니다.

  1. GitLab QA가 사용할 개발 인스턴스에 사용자 계정을 만듭니다.

    그리고 해당 개발 인스턴스에 액세스할 수 있는 어떤 기계에서든 다음을 실행합니다:

  2. GitLab EE 저장소를 복제합니다.

    git clone git@gitlab.com:gitlab-org/gitlab.git
    
  3. qa 디렉토리로 변경합니다.

    cd gitlab/qa
    
  4. 필요한 젬을 설치합니다.

    bundle install
    
  5. 테스트를 실행합니다.

    GITLAB_USERNAME=$USERNAME GITLAB_PASSWORD=$PASSWORD bundle exec bin/qa Test::Instance $DEV_INSTANCE_URL
    

배포된 인스턴스에 대해 QA 파이프라인 트리거하기

배포된 인스턴스에 지속적인 네트워크 액세스가 있는 경우, GitLab QA Executor 프로젝트를 사용하여 배포된 인스턴스에 대해 GitLab QA 테스트를 트리거할 수 있습니다. 이것은 병렬로 self-managed GitLab 환경에 대해 GitLab QA를 실행하기 위한 CI 구성을 포함하고 있습니다.

특정 chefspec 테스트 실행하기

변경 내용을 현재 테스트에 대해 확인하거나 새로 추가한 테스트에 대해 확인할 수도 있습니다.

  1. 해당 젬을 빌드하는 데 필요한 bundlerruby-dev를 설치합니다:

    sudo apt install bundler ruby-dev
    
  2. omnibus-gitlab 디렉토리로 변경합니다:

    cd ~/omnibus-gitlab
    
  3. omnibus 디렉토리 내에서 필요한 젬을 설치합니다:

    /usr/bin/bundle install --path vendor/bundle
    

    GitLab Nightly Docker 이미지를 사용하는 경우, /opt/gitlab/embedded/bin$PATH에 앞쪽에 추가되므로 bundle 만 사용하는 대신에 시스템 bundle에 대한 절대 경로를 사용합니다.

  4. 원하는 테스트를 실행합니다. 시크릿 파일을 읽을 수 있어야 하므로 테스트는 root로 실행해야 할 수도 있습니다:

    sudo bundle exec rspec spec/<path_to_spec_file>
    

    주의: 영어 단어 링크에 대한 한글 번역이 주석으로 처리되었습니다. 해당 부분 수정시 주석을 해제해 번역을 완료하세요.

omnibus-gitlab 쿡북과 함께 chef-shell 사용하기

귀하의 인스턴스에서 쿡북에 대한 변경 사항을 디버그하기 위해 chef-shell을 사용할 수 있습니다.

개발 서버에서 루트로 다음을 실행하세요:

/opt/gitlab/embedded/bin/cinc-shell -z -c /opt/gitlab/embedded/cookbooks/solo.rb -s -j /opt/gitlab/embedded/cookbooks/dna.json

GitLab의 Customers Portal Staging 사용하기

GitLab 인스턴스를 Customers Portal Staging에 연결하려면 /etc/gitlab/gitlab.rb에 다음과 같이 사용자 정의 환경 변수를 설정할 수 있습니다. 다음과 같이 gitlab_rails['env'] 해시에 제공하여 설정하세요:

  • GITLAB_LICENSE_MODEtest로 설정합니다.
  • CUSTOMER_PORTAL_URLhttps://customers.staging.gitlab.com로 설정합니다.

예시:

gitlab_rails['env'] = {
    "GITLAB_LICENSE_MODE" => "test",
    "CUSTOMER_PORTAL_URL" => "https://customers.staging.gitlab.com"
}

참고: GitLab Geo를 사용하는 경우, 위의 구성을 사용하는 배포본은 각 보조 사이트에 추가되어야 합니다.

OpenShift GitLab 개발 설정

Omnibus GitLab 개발 설정 문서를 참조하세요.