마이그레이션 순서

GitLab 17.1부터 마이그레이션은 GitLab 릴리즈 주기에 따라 따르는 사용자 정의 순서체계를 사용하여 실행됩니다. 이 변경으로 인해 업그레이드 프로세스가 간소화되고 유지보수 및 지원이 모두 용이해집니다.

17.1 이전 로직

마이그레이션은 마이그레이션 파일 이름에있는 14 자리 타임스탬프를 기반으로 한 순서대로 실행됩니다. 이 동작은 Rails 응용 프로그램의 기본 동작입니다.

또한 GitLab은이 중요한 방식으로 표준 마이그레이션 동작을 확장하는 로직도 제공합니다.

  1. 추가 폴더에서 마이그레이션을 로드 할 수 있습니다. 예를 들어, 마이그레이션은 db/post_migrate 폴더와 db/migrate 폴더에서 모두 로드되며 이것은 포스트-배포 마이그레이션을 사용할 때 필요합니다.
  2. 환경 변수 SKIP_POST_DEPLOYMENT_MIGRATIONS를 설정하면 post_migrate 폴더에서 마이그레이션이로드되지 않습니다.
  3. 모든 새로운 마이그레이션에는 GitLab 마이너 버전 또는 “마일스톤”을 제공해야 합니다.

17.1 이후 로직

마이그레이션이 다음과 같은 순서대로 실행됩니다.

  1. 마일스톤이 정의되지 않은 마이그레이션이 먼저 실행되며, 타임스탬프에 의해 순서가 지정됩니다.
  2. 마일스톤이 정의된 마이그레이션이 마일스톤 순서로 실행됩니다.
    1. 일반 마이그레이션은 포스트-배포 마이그레이션보다 먼저 실행됩니다.
    2. 동일 유형의 마이그레이션과 마일스톤은 타임스탬프에 지정된 순서대로 실행됩니다.

예:

  1. 마일스톤이 정의되지 않은 모든 마이그레이션.
  2. 17.1 정규 마이그레이션.
  3. 17.1 포스트-배포 마이그레이션.
  4. 17.2 정규 마이그레이션.
  5. 17.2 포스트-배포 마이그레이션.
  6. 업그레이드의 각 마일스톤에 대해 반복합니다.

포스트-배포 마이그레이션의 새로운 동작

이 변경으로 인해 포스트-배포 마이그레이션은 항상 주어진 마일스톤의 끝에 정렬되도록 유도됩니다. 이전에는 SKIP_POST_DEPLOYMENT_MIGRATIONS이 설정되지 않은 경우 포스트-배포 마이그레이션이 일반 마이그레이션과 번갈아가며 실행되었습니다. SKIP_POST_DEPLOYMENT_MIGRATIONS가 설정되면 포스트-배포 마이그레이션이 실행되지 않습니다.