애플리케이션 설정 개발
GitLab 기여자가 애플리케이션 설정을 추가하고 데이터베이스 칼럼을 JSONB 칼럼으로 마이그레이션하는 방법을 설명합니다.
이 문서는 기여자가 GitLab에 애플리케이션 설정을 추가하기 위한 개발 가이드를 제공합니다. 애플리케이션 설정은 application_settings 테이블에 저장됩니다. 각 설정은 자체 칼럼을 가지며 행은 하나만 있어야 합니다. GitLab Duo 관련 애플리케이션 설정은 다른 테이블에 저장됩니다 . 새 애플리케이션 설정 추가 # 우선, 애플리케이션 설정을 추가해야 하는지 여부를 결정해야 합니다. 새 설정을 추가할 때는 구성 원칙 을 고려하세요. application_settings 테이블이 지나치게 넓어지는 것을 방지하기 위해 관련 애플리케이션 설정을 단일 JSONB 칼럼에 저장하는 것을 권장합니다. 또한, 기존 칼럼에 새 설정을 추가하는 경우에는 데이터베이스 검토가 필요 없으므로 시간을 절약할 수 있습니다. 새 설정을 추가하려면 다음을 수행해야 합니다: 새 설정을 저장하는 데 사용할 수 있는 기존 JSONB 칼럼이 있는지 확인합니다. 기존 JSON 칼럼이 있는 경우: ApplicationSetting 모델의 rate_limits 와 같이 JSONB 칼럼에 새 설정을 추가합니다. rate_limits 검증기 와 같이 해당 칼럼의 JSON 스키마 검증기를 업데이트합니다. 사용할 수 있는 기존 JSON 칼럼이 없는 경우: 참고를 위해 이 머지 리퀘스트 를 참조하여 application_settings 테이블에 새 JSON 칼럼을 추가합니다. 칼럼이 항상 해시를 저장하도록 보장하는 제약 조건을 추가합니다. 참고를 위해 이 머지 리퀘스트 를 참조하세요. 기존의 관련 칼럼을 새로 생성된 JSONB 칼럼으로 이동하기 위한 후속 이슈를 생성합니다. 데이터베이스 칼럼을 JSONB 칼럼으로 마이그레이션 하는 프로세스를 따르세요. 표시 가능한 속성 목록 에 새 설정을 추가합니다. 설정에 기본값이 있는 경우, ApplicationSettingImplementation#defaults 에 새 설정을 추가합니다. 설정에 기본값이 있는 경우, 기본값에 대한 테스트 를 추가합니다. ApplicationSetting 모델 에 새 필드에 대한 유효성 검사를 추가합니다. 유효성 검사 및 기본값에 대한 모델 테스트 를 추가합니다. 적절한 뷰 파일 을 찾거나 새로 만들어 새 설정에 폼 필드를 추가합니다. API 문서 를 업데이트합니다. 애플리케이션 설정은 REST API에서 자동으로 사용 가능하게 됩니다. scripts/cells/application-settings-analysis.rb 스크립트를 실행하여 config/application_setting_columns/*.yml 에 정의 YAML 파일을 생성하고, db/structure.sql 및 API 문서를 기반으로 cells/application_settings_analysis 문서 파일을 업데이트합니다. 정의 파일이 생성된 후에는 clusterwide 키를 true 또는 false 로 설정해야 합니다. clusterwide: true 로 설정하면 속성 값이 리더 셀에서 다른 셀로 복사됩니다. 이는 Cells