마이그레이션 순서
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
가 설정되면, 배포 후 마이그레이션은 실행되지 않습니다.