마이그레이션 순서
GitLab 17.1부터 적용된 커스텀 마이그레이션 실행 순서 체계와 이전 버전의 동작 방식 차이를 설명합니다.
GitLab 17.1부터 마이그레이션은 GitLab 릴리즈 주기에 맞춘 커스텀 순서 체계를 사용하여 실행됩니다. 이 변경으로 업그레이드 프로세스가 단순화되고 유지보수 및 지원이 용이해졌습니다. 17.1 이전 로직 # 마이그레이션은 마이그레이션 파일 이름에 포함된 14자리 타임스탬프를 기준으로 순서대로 실행됩니다. 이 동작은 Rails 애플리케이션의 기본 동작입니다. GitLab은 다음과 같은 중요한 방식으로 표준 마이그레이션 동작을 확장하는 로직도 제공합니다: 추가 폴더에서 마이그레이션을 로드할 수 있습니다. 예를 들어, 포스트-배포 마이그레이션 을 사용할 때 필요한 db/post_migrate 폴더와 db/migrate 폴더 모두에서 마이그레이션을 로드합니다. 환경 변수 SKIP_POST_DEPLOYMENT_MIGRATIONS 를 설정하면 post_migrate 폴더에서 마이그레이션을 로드하지 않습니다. 모든 새 마이그레이션에는 GitLab 마이너 버전(또는 "마일스톤")을 반드시 지정해야 합니다. 17.1+ 로직 # 마이그레이션은 다음 순서로 실행됩니다: milestone 이 정의되지 않은 마이그레이션은 타임스탬프 순서로 가장 먼저 실행됩니다. milestone 이 정의된 마이그레이션은 마일스톤 순서로 실행됩니다: 일반 마이그레이션은 포스트-배포 마이그레이션보다 먼저 실행됩니다. 동일한 유형과 마일스톤을 가진 마이그레이션은 타임스탬프 순서로 실행됩니다. 예시: milestone 이 정의되지 않은 모든 마이그레이션. 17.1 일반 마이그레이션. 17.1 포스트-배포 마이그레이션. 17.2 일반 마이그레이션. 17.2 포스트-배포 마이그레이션. 업그레이드의 각 마일스톤에 대해 반복합니다. 포스트-배포 마이그레이션의 새로운 동작 # 이 변경으로 인해 포스트-배포 마이그레이션은 항상 특정 마일스톤의 끝에 정렬됩니다. 이전에는 SKIP_POST_DEPLOYMENT_MIGRATIONS 가 설정되지 않은 경우 포스트-배포 마이그레이션이 일반 마이그레이션과 혼재되어 실행되었습니다. SKIP_POST_DEPLOYMENT_MIGRATIONS 가 설정된 경우에는 포스트-배포 마이그레이션이 실행되지 않습니다.