EE에서 CE로 다운그레이드하기

Enterprise Edition (EE)을 Community Edition (CE)로 다운그레이드하려는 경우, 미리 몇 가지 단계를 거쳐야 합니다.

  • Linux 패키지 설치의 경우, 이러한 단계는 현재 EE 패키지 위에 CE 패키지를 설치하기 전에 수행됩니다.
  • 소스로 컴파일하여 설치한 경우, 이러한 단계는 리모트를 변경하고 최신 CE 코드를 가져오기 전에 수행됩니다.

Enterprise 전용 기능 비활성화

가장 먼저 해야 할 일은 다음 기능을 비활성화하는 것입니다.

인증 메커니즘

Kerberos 및 Atlassian Crowd은 Enterprise Edition에서만 사용할 수 있습니다. 다운그레이드하기 전에 이러한 메커니즘을 비활성화해야 합니다. 사용자에게 대체 인증 방법을 제공해야 합니다.

데이터베이스에서 서비스 통합 항목 제거

GitHub 통합은 Enterprise Edition 코드베이스에서만 사용할 수 있으므로 Community Edition으로 다운그레이드하면 다음 오류가 표시됩니다.

Completed 500 Internal Server Error in 497ms (ActiveRecord: 32.2ms)

ActionView::Template::Error (The single-table inheritance mechanism failed to locate the subclass: 'GithubService'. This error is raised because the column 'type' is reserved for storing the class in case of inheritance. Please rename this column if you didn't intend it to be used for storing the inheritance class or overwrite Integration.inheritance_column to use another column for that information.)

모든 통합은 각 프로젝트에 자동으로 생성됩니다. 이 오류를 방지하려면 데이터베이스에서 type이 GithubService로 설정된 모든 레코드를 제거해야 합니다.

Linux 패키지 (Omnibus)
sudo gitlab-rails runner "Integration.where(type: ['GithubService']).delete_all"
소스로 컴파일 (source)
bundle exec rails runner "Integration.where(type: ['GithubService']).delete_all" production

참고: GitLab =< v13.0을 실행 중이라면 JenkinsDeprecatedService 레코드도 제거해야 하고, GitLab =< v13.6을 실행 중이라면 JenkinsService 레코드도 제거해야 합니다.

환경 범위 변수

GitLab Community Edition에서는 환경 범위가 완전히 무시됩니다. 따라서 이 기능을 사용 중이라면 구성에 필요한 조정이 필요할 수 있습니다. 특히 프로젝트에서 구성 변수가 동일한 키를 공유하지만 서로 다른 범위를 가지는 경우 이러한 경우에는 특정 환경에 예상하지 않는 변수를 실수로 가져올 수 있습니다. 이 경우에는 해당 환경에 올바른 변수가 있는지 확인하십시오.

이전으로 돌아갈 수 있도록 데이터는 완전히 유지되므로 필요하다면 항상 EE로 업그레이드하고 동작을 복원할 수 있습니다.

CE로 다운그레이드

위에서 언급한 단계를 수행한 후, 이제 GitLab 설치를 Community Edition으로 다운그레이드할 준비가 되었습니다.

의존성이 모두 최신 상태인지 확인하려면 올바른 업데이트 가이드를 따르는 것을 잊지 마세요.

Linux 패키지 설치

Linux 패키지 설치를 다운그레이드하려면 현재 설치된 패키지 위에 Community Edition 패키지를 설치할 수 있습니다. 이를 수동으로 진행하려면 다음 중 하나를 직접 수행하면 됩니다.

소스로 컴파일한 설치

소스로 컴파일한 설치를 다운그레이드하려면:

  1. GitLab 설치의 현재 리모트를 Community Edition 리모트로 대체합니다.
  2. 최신 변경사항을 가져오고 최신 안정 버전 브랜치를 확인합니다.

    git remote set-url origin git@gitlab.com:gitlab-org/gitlab-foss.git
    git fetch --all
    git checkout 8-x-stable