마이그레이션 순서
GitLab 17.1부터 마이그레이션은 GitLab 릴리즈 주기에 따라 따르는 사용자 정의 순서체계를 사용하여 실행됩니다. 이 변경으로 인해 업그레이드 프로세스가 간소화되고 유지보수 및 지원이 모두 용이해집니다.
17.1 이전 로직
마이그레이션은 마이그레이션 파일 이름에있는 14 자리 타임스탬프를 기반으로 한 순서대로 실행됩니다. 이 동작은 Rails 응용 프로그램의 기본 동작입니다.
또한 GitLab은이 중요한 방식으로 표준 마이그레이션 동작을 확장하는 로직도 제공합니다.
- 추가 폴더에서 마이그레이션을 로드 할 수 있습니다. 예를 들어, 마이그레이션은
db/post_migrate
폴더와db/migrate
폴더에서 모두 로드되며 이것은 포스트-배포 마이그레이션을 사용할 때 필요합니다. - 환경 변수
SKIP_POST_DEPLOYMENT_MIGRATIONS
를 설정하면post_migrate
폴더에서 마이그레이션이로드되지 않습니다. - 모든 새로운 마이그레이션에는 GitLab 마이너 버전 또는 “마일스톤”을 제공해야 합니다.
17.1 이후 로직
마이그레이션이 다음과 같은 순서대로 실행됩니다.
-
마일스톤
이 정의되지 않은 마이그레이션이 먼저 실행되며, 타임스탬프에 의해 순서가 지정됩니다. -
마일스톤
이 정의된 마이그레이션이 마일스톤 순서로 실행됩니다.- 일반 마이그레이션은 포스트-배포 마이그레이션보다 먼저 실행됩니다.
- 동일 유형의 마이그레이션과 마일스톤은 타임스탬프에 지정된 순서대로 실행됩니다.
예:
-
마일스톤
이 정의되지 않은 모든 마이그레이션. -
17.1
정규 마이그레이션. -
17.1
포스트-배포 마이그레이션. -
17.2
정규 마이그레이션. -
17.2
포스트-배포 마이그레이션. - 업그레이드의 각 마일스톤에 대해 반복합니다.
포스트-배포 마이그레이션의 새로운 동작
이 변경으로 인해 포스트-배포 마이그레이션은 항상 주어진 마일스톤의 끝에 정렬되도록 유도됩니다. 이전에는 SKIP_POST_DEPLOYMENT_MIGRATIONS
이 설정되지 않은 경우 포스트-배포 마이그레이션이 일반 마이그레이션과 번갈아가며 실행되었습니다. SKIP_POST_DEPLOYMENT_MIGRATIONS
가 설정되면 포스트-배포 마이그레이션이 실행되지 않습니다.