Omnibus GitLab 폐기 과정

GitLab​폐기 지침을 준수하는 것 외에도 Omnibus GitLab 패키지에 폐기 메시지를 추가해야 합니다.

폐기 메시지를 통해 GitLab​​​​​​​ 관리자에게 폐기된 기능의 제거를 알리는 것은 다음과 같습니다.

  1. 폐기 메시지 추가.
  2. 폐기 메시지 제거 추적.
  3. 기능 폐기 제거 추적.
  4. 폐기 메시지 제거.

반드시 알아두어야 할 점

폐기 메시지를 추가하기 전에 아래 항목들을 반드시 읽어보세요.

폐기 메시지 추가

우리는 Gitlab::Deprecations 클래스의 list 메서드에 관려된 폐기 사항 목록을 저장합니다. 만약 설정이 폐기되어야 한다면 해당 목록에 적절한 세부 정보를 추가해야 합니다. 예를 들어:

deprecations = [
          {
            config_keys: %w(gitlab postgresql data_dir),
            deprecation: '11.6',
            removal: '14.0',
            note: "https://docs.gitlab.com/omnibus/settings/database.html#store-postgresql-data-in-a-different-directory에서 postgresql['dir']을 사용하는 방법을 참조하세요."
          },
          {
            config_keys: %w(gitlab sidekiq cluster),
            deprecation: '13.0',
            removal: '14.0',
            note: "sidekiq를 직접 실행하는 것은 폐기되었습니다. sidekiq-cluster를 사용하는 방법은 https://docs.gitlab.com/ee/administration/operations/extra_sidekiq_processes.html 에서 확인하세요."
          },
...
]

config_keys

config_keys는 구성 해시를 통해 특정 구성에 도달하기 위해 사용할 수 있는 키 목록을 나타냅니다. 예를 들어 %w(mattermost log_file_directory)mattermost['log_file_directory'] 설정을 의미합니다. 마찬가지로 %w(gitlab nginx listen_addresses)gitlab['nginx']['listen_addresses']를 나타냅니다. 우리는 내부적으로 /etc/gitlab/gitlab.rb에서 사용하는 nginx['listen_addresses']로 변환합니다.

deprecation

deprecation은 변경이 폐기된 <major>.<minor> 버전을 설정하는 곳입니다. 해당 버전부터, gitlab-ctl reconfigure를 실행하면 설정이 removal 버전에서 제거되고 제공된 note가 표시됩니다.

removal

removal은 변경이 더 이상 지원되지 않을 <major>.<minor> 버전을 설정하는 곳입니다. 대부분의 경우 이것은 주 버전 릴리스여야 합니다. Omnibus 패키지는 설치 시작시 스크립트를 실행하여 설정이 더 이상 지원되지 않는지 확인합니다. 구성을 더 이상 지원하지 않는 경우 변경 사항을 만들기 전에 설치가 일찍 실패합니다. 이와 유사하게 gitlab-ctl reconfigure를 실행하면 제거된 설정에 대한 검사가 이루어집니다. 이는 사용자가 이전 인스턴스에서 gitlab.rb를 그대로 새 인스턴스에 복사하는 경우에 대비한 것입니다.

note

notegitlab-ctl reconfigure에서 사용자에게 제공되는 폐기 메시지의 일부입니다. 이 영역은 보통 새 문서에 링크를 걸어 사용자에게 설정을 변경하는 방법을 알리거나, 설정의 이름이 변경된 경우 새로운 설정 이름이 무엇인지 알려줍니다.

폐기 메시지 제거 추적

폐기 메시지는 제거와 함께 함께 정리해서는 안 됩니다. 왜냐하면 제거 후에도 기존 구성을 아직 모두 이주하지 않은 상태에서 버전 업그레이드를 보호하기 때문입니다.

업그레이드는 Gitlab::Deprecations.check_config 메서드를 실행하여 존재하는 구성을 예정된 제거 날짜와 비교한 후 GitLab 패키지가 업데이트 되도록 허용합니다.

또한, 여러 GitLab 버전을 건너뛰는 사용자들이 있습니다. 그 이유로 폐기 메시지는 upgrade paths에 따라 계획된 필수 중지 다음에만 삭제하는 것을 권장합니다. 예를 들어:

  • 폐기 메시지가 15.8에 추가되었습니다.
  • 이전 구성이 16.0에서 코드베이스에서 제거되었습니다.
  • 이 폐기 메시지는 16.3에서 제거되어야 합니다. 이것은 다음 계획된 필수 중지이기 때문입니다.

폐기 메시지 제거를 추적하기 위해:

  1. Remove Deprecation Message 이슈 템플릿을 사용하여 추적 이슈를 만듭니다.
  2. 폐기 메시지 옆에 해당 메시지를 제거하는 추적 이슈 링크가 있는 코멘트를 추가합니다. 예를 들어:

    {
      config_keys: ...
      deprecation: '15.8', # 제거 메시지 이슈: https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/XYZ
      removal: '16.0', 
      note: "..."
    },
    

기능 제거 추적

반드시 알아두어야 할 점 섹션에 기반하여 폐기하려는 기능을 제거할 올바른 마일스톤을 정의하세요. 그런 다음 기능의 제거를 추적하는 추적 이슈를 만들고 removal 키 옆에 해당 이슈를 추적하는 코멘트를 추가하세요. 예를 들어:

{
  config_keys: ...
  deprecation: '15.8', # 제거 메시지 이슈: https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/1
  removal: '16.0', # 제거 이슈: https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/2
  note: "..."
},

추적 이슈는 해당 기능이 제거될 것으로 예상되는 마일스톤으로 설정되어야 합니다.

deprecation 메시지 제거

메시지를 제거할 준비가 되었을 때 다음을 수행해야 합니다:

  1. 이전 마일스톤에서 사용이 중단된 구성이 실제로 제거되었는지 확인하십시오.
  2. 메시지 제거가 구성을 제거한 마일스톤보다 나중에 필요한 중지 마일스톤에 릴리스되는지 확인하십시오.
  3. 사용이 중지된 메시지를 제거하고 후속 이슈를 닫기 위한 MR을 엽니다.