InfoGrab DocsInfoGrab Docs

마이그레이션 스쿼싱

요약

마이그레이션 스쿼싱은 여러 데이터베이스 마이그레이션을 단일 스키마 정의로 결합하여 데이터베이스 설정 성능을 향상시키고 관리 가능한 마이그레이션 히스토리를 유지합니다. 마이그레이션 스쿼싱은 GitLab Housekeeper를 통해 자동화됩니다.

마이그레이션 스쿼싱#

히스토리

마이그레이션 스쿼싱은 여러 데이터베이스 마이그레이션을 단일 스키마 정의로 결합하여 데이터베이스 설정 성능을 향상시키고 관리 가능한 마이그레이션 히스토리를 유지합니다.

자동화#

마이그레이션 스쿼싱은 GitLab Housekeeper를 통해 자동화됩니다. Keeps::SquashMigrations keep은 예정된 마일스톤에서 자동으로 머지 리퀘스트를 생성합니다.

자동화는 Engineering Productivity 팀의 CI 구성에 있는 예약된 파이프라인 job을 통해 실행됩니다.

스케줄#

스쿼싱은 .2, .5, .8, .11로 끝나는 마일스톤에서 발생합니다. 이는 필수 중지점과 일치합니다.

타깃 브랜치는 현재 마일스톤보다 두 개의 필수 중지점 이전입니다:

현재 마일스톤 스쿼싱 대상
X.2 (X-1).8
X.5 (X-1).11
X.8 X.2
X.11 X.5

예를 들어, 18.8 필수 중지점에서 마이그레이션은 origin/18-2-stable-ee까지 스쿼싱됩니다.

수동 실행#

이전 버전(예: 16.10)에서 수동으로 마이그레이션을 스쿼싱하려면 다음을 실행하세요:

bundle exec rake "gitlab:db:squash[origin/16-10-stable-ee]"

이 Rake 태스크는 다음을 수행합니다:

  • 이전 버전의 모든 마이그레이션을 제거합니다

  • 스쿼싱된 스키마로 db/init_structure.sql을 업데이트합니다

  • 관련 파일의 스키마 버전 참조를 업데이트합니다

  • 연관된 마이그레이션 스펙 및 RuboCop TODO를 제거합니다

  • 완료된 배치 백그라운드 마이그레이션을 정리합니다

파라미터#

파라미터 설명
[origin/16-10-stable-ee] 마이그레이션 스쿼싱의 기준선으로 사용할 Git 참조. 타깃 버전의 안정 브랜치여야 합니다.

문제 해결#

누락된 스키마 참조#

누락된 스키마 참조와 관련된 오류가 발생하면 다음을 확인하세요:

  • 이전 마이그레이션을 참조할 수 있는 마이그레이션 스펙 파일

  • 수동 업데이트가 필요할 수 있는 백그라운드 마이그레이션 파일

  • 특정 마이그레이션 버전을 참조하는 문서

관련 문서#

마이그레이션 스쿼싱

GitLab v19.1
원문 보기
요약

마이그레이션 스쿼싱은 여러 데이터베이스 마이그레이션을 단일 스키마 정의로 결합하여 데이터베이스 설정 성능을 향상시키고 관리 가능한 마이그레이션 히스토리를 유지합니다. 마이그레이션 스쿼싱은 GitLab Housekeeper를 통해 자동화됩니다.

마이그레이션 스쿼싱#

히스토리

마이그레이션 스쿼싱은 여러 데이터베이스 마이그레이션을 단일 스키마 정의로 결합하여 데이터베이스 설정 성능을 향상시키고 관리 가능한 마이그레이션 히스토리를 유지합니다.

자동화#

마이그레이션 스쿼싱은 GitLab Housekeeper를 통해 자동화됩니다. Keeps::SquashMigrations keep은 예정된 마일스톤에서 자동으로 머지 리퀘스트를 생성합니다.

자동화는 Engineering Productivity 팀의 CI 구성에 있는 예약된 파이프라인 job을 통해 실행됩니다.

스케줄#

스쿼싱은 .2, .5, .8, .11로 끝나는 마일스톤에서 발생합니다. 이는 필수 중지점과 일치합니다.

타깃 브랜치는 현재 마일스톤보다 두 개의 필수 중지점 이전입니다:

현재 마일스톤 스쿼싱 대상
X.2 (X-1).8
X.5 (X-1).11
X.8 X.2
X.11 X.5

예를 들어, 18.8 필수 중지점에서 마이그레이션은 origin/18-2-stable-ee까지 스쿼싱됩니다.

수동 실행#

이전 버전(예: 16.10)에서 수동으로 마이그레이션을 스쿼싱하려면 다음을 실행하세요:

bundle exec rake "gitlab:db:squash[origin/16-10-stable-ee]"

이 Rake 태스크는 다음을 수행합니다:

  • 이전 버전의 모든 마이그레이션을 제거합니다

  • 스쿼싱된 스키마로 db/init_structure.sql을 업데이트합니다

  • 관련 파일의 스키마 버전 참조를 업데이트합니다

  • 연관된 마이그레이션 스펙 및 RuboCop TODO를 제거합니다

  • 완료된 배치 백그라운드 마이그레이션을 정리합니다

파라미터#

파라미터 설명
[origin/16-10-stable-ee] 마이그레이션 스쿼싱의 기준선으로 사용할 Git 참조. 타깃 버전의 안정 브랜치여야 합니다.

문제 해결#

누락된 스키마 참조#

누락된 스키마 참조와 관련된 오류가 발생하면 다음을 확인하세요:

  • 이전 마이그레이션을 참조할 수 있는 마이그레이션 스펙 파일

  • 수동 업데이트가 필요할 수 있는 백그라운드 마이그레이션 파일

  • 특정 마이그레이션 버전을 참조하는 문서

관련 문서#