InfoGrab DocsInfoGrab Docs

마이그레이션 순서

요약

GitLab 17.1부터 마이그레이션은 GitLab 릴리스 주기에 맞춘 자체 정렬 방식으로 실행됩니다. 마이그레이션은 마이그레이션 파일 이름에 포함된 14자리 타임스탬프를 기준으로 정렬되어 실행됩니다. GitLab은 표준 마이그레이션 동작을 다음과 같은 중요한 방식으로 확장합니다.

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. milestone 이 정의되지 않은 마이그레이션이 타임스탬프 순으로 먼저 실행됩니다.
  2. milestone 이 정의된 마이그레이션은 마일스톤 순서로 실행됩니다.
    1. 일반 마이그레이션이 배포 후 마이그레이션보다 먼저 실행됩니다.
    2. 유형과 마일스톤이 같은 마이그레이션은 타임스탬프가 지정한 순서로 실행됩니다.

예시는 다음과 같습니다.

  1. milestone 이 정의되지 않은 모든 마이그레이션입니다.
  2. 17.1 일반 마이그레이션입니다.
  3. 17.1 배포 후 마이그레이션입니다.
  4. 17.2 일반 마이그레이션입니다.
  5. 17.2 배포 후 마이그레이션입니다.
  6. 업그레이드에 포함된 각 마일스톤마다 반복합니다.

배포 후 마이그레이션의 새 동작#

이 변경으로 배포 후 마이그레이션은 항상 해당 마일스톤의 맨 뒤로 정렬됩니다. 이전에는 SKIP_POST_DEPLOYMENT_MIGRATIONS가 설정되지 않은 경우 배포 후 마이그레이션이 일반 마이그레이션과 섞여 실행되었습니다. SKIP_POST_DEPLOYMENT_MIGRATIONS가 설정되면 배포 후 마이그레이션은 실행되지 않습니다.

마이그레이션 순서

GitLab v19.4
원문 보기

요약

GitLab 17.1부터 마이그레이션은 GitLab 릴리스 주기에 맞춘 자체 정렬 방식으로 실행됩니다. 마이그레이션은 마이그레이션 파일 이름에 포함된 14자리 타임스탬프를 기준으로 정렬되어 실행됩니다. GitLab은 표준 마이그레이션 동작을 다음과 같은 중요한 방식으로 확장합니다.

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. milestone 이 정의되지 않은 마이그레이션이 타임스탬프 순으로 먼저 실행됩니다.
  2. milestone 이 정의된 마이그레이션은 마일스톤 순서로 실행됩니다.
    1. 일반 마이그레이션이 배포 후 마이그레이션보다 먼저 실행됩니다.
    2. 유형과 마일스톤이 같은 마이그레이션은 타임스탬프가 지정한 순서로 실행됩니다.

예시는 다음과 같습니다.

  1. milestone 이 정의되지 않은 모든 마이그레이션입니다.
  2. 17.1 일반 마이그레이션입니다.
  3. 17.1 배포 후 마이그레이션입니다.
  4. 17.2 일반 마이그레이션입니다.
  5. 17.2 배포 후 마이그레이션입니다.
  6. 업그레이드에 포함된 각 마일스톤마다 반복합니다.

배포 후 마이그레이션의 새 동작#

이 변경으로 배포 후 마이그레이션은 항상 해당 마일스톤의 맨 뒤로 정렬됩니다. 이전에는 SKIP_POST_DEPLOYMENT_MIGRATIONS가 설정되지 않은 경우 배포 후 마이그레이션이 일반 마이그레이션과 섞여 실행되었습니다. SKIP_POST_DEPLOYMENT_MIGRATIONS가 설정되면 배포 후 마이그레이션은 실행되지 않습니다.