InfoGrab DocsInfoGrab Docs

db:migrate:multi-version-upgrade job

요약

이 job은 머지 리퀘스트 파이프라인의 test Stage에서 실행됩니다. 데이터베이스 덤프는 PostgreSQL Dump Generator로 생성하고 관리합니다. 이 실패는 대개 작업 브랜치의 실제 마이그레이션 오류 때문에 발생합니다.

이 job은 머지 리퀘스트 파이프라인의 test Stage에서 실행됩니다. 최신 필수 업그레이드 중지점에서 작성자의 작업 브랜치까지 이어지는 멀티 버전 업그레이드에 대해 마이그레이션이 통과하는지 검증합니다. 테스트 데이터가 포함된 최신 GitLab 버전 중지점에서 생성한 PostgreSQL 덤프를 대상으로 gitlab:db:configure를 실행하는 방식으로 검증합니다.

데이터베이스 덤프는 PostgreSQL Dump Generator로 생성하고 관리합니다. 데이터베이스에 데이터를 시딩할 때 이 도구는 bulk_data.rb 구성을 사용하는 Data Seeder로 모든 팩토리를 시딩하고, db:seed_fu로 모든 db/fixtures를 시딩합니다. 최신 덤프는 필수 중지점의 최신 패치 릴리스를 대상으로 스케줄 파이프라인에서 자동으로 생성됩니다.

문제 해결#

데이터베이스 재구성 실패#

이 실패는 대개 작업 브랜치의 실제 마이그레이션 오류 때문에 발생합니다. 로컬에서 실패를 재현하려면 마이그레이션 업그레이드 테스트 안내를 참고합니다. 이 안내에는 로컬 GitLab Development Kit 이나 GitLab Docker 인스턴스에 최신 PostgreSQL 덤프를 가져오는 단계가 정리되어 있습니다.

실제 예시는 이 실패한 job을 참고합니다.

브로큰 마스터#

새로운 필수 업그레이드 중지점이 추가되면(3~4개 마일스톤마다) 새 PostgreSQL 덤프 빌드가 트리거됩니다. 경우에 따라 이로 인해 master 파이프라인에서 db:migrate:multi-version-upgrade job 이 실패할 수 있습니다. 예를 들어 추가 테이블이 시딩되면, 이러한 시딩 테이블이 없던 이전 덤프에서는 놓쳤을 수 있는 마이그레이션 오류를 탐지하는 데 도움이 됩니다.

브로큰 마스터 상황의 워크플로는 다음과 같습니다.

  1. 오류를 일으킨 마이그레이션을 검색해 근본 원인 MR을 식별합니다. 예를 들면 실패한 job의 db/migrate/20240416123401_add_security_policy_management_project_id_to_security_policies.rb 입니다.
  2. 해당 MR을 되돌릴지 아니면 수정 작업을 진행할지 논의하기 위해 마이그레이션을 도입한 관련 팀에 연락합니다.
    • 해당 팀과 연락이 닿지 않으면 #database Slack 채널에 게시합니다.
  3. 수정이나 되돌리기 작업이 진행되는 동안에는 CI/CD Settings 페이지에서 DISABLE_DB_MULTI_VERSION_UPGRADE=true를 설정해 job을 일시적으로 비활성화하면 master 파이프라인의 차단을 해제할 수 있습니다.
    • job을 비활성화할 때는 #master-broken Slack 채널에 공지합니다.
  4. job 안정성 추적 이슈 #458402에 메모를 추가합니다.
  5. CI/CD Settings에서 DISABLE_DB_MULTI_VERSION_UPGRADE를 제거해 job을 다시 활성화합니다.

데이터베이스 가져오기 실패#

외부 의존성 때문에 gitlab:db:configure 이전의 설정 단계에서 job 이 실패하는 경우에는 GitLab 프로젝트 CI 변수에 DISABLE_DB_MULTI_VERSION_UPGRADE=true를 설정해 job을 비활성화하면 브로큰 마스터의 차단을 해제할 수 있습니다.

db:migrate:multi-version-upgrade job

GitLab v19.4
원문 보기

요약

이 job은 머지 리퀘스트 파이프라인의 test Stage에서 실행됩니다. 데이터베이스 덤프는 PostgreSQL Dump Generator로 생성하고 관리합니다. 이 실패는 대개 작업 브랜치의 실제 마이그레이션 오류 때문에 발생합니다.

이 job은 머지 리퀘스트 파이프라인의 test Stage에서 실행됩니다. 최신 필수 업그레이드 중지점에서 작성자의 작업 브랜치까지 이어지는 멀티 버전 업그레이드에 대해 마이그레이션이 통과하는지 검증합니다. 테스트 데이터가 포함된 최신 GitLab 버전 중지점에서 생성한 PostgreSQL 덤프를 대상으로 gitlab:db:configure를 실행하는 방식으로 검증합니다.

데이터베이스 덤프는 PostgreSQL Dump Generator로 생성하고 관리합니다. 데이터베이스에 데이터를 시딩할 때 이 도구는 bulk_data.rb 구성을 사용하는 Data Seeder로 모든 팩토리를 시딩하고, db:seed_fu로 모든 db/fixtures를 시딩합니다. 최신 덤프는 필수 중지점의 최신 패치 릴리스를 대상으로 스케줄 파이프라인에서 자동으로 생성됩니다.

문제 해결#

데이터베이스 재구성 실패#

이 실패는 대개 작업 브랜치의 실제 마이그레이션 오류 때문에 발생합니다. 로컬에서 실패를 재현하려면 마이그레이션 업그레이드 테스트 안내를 참고합니다. 이 안내에는 로컬 GitLab Development Kit 이나 GitLab Docker 인스턴스에 최신 PostgreSQL 덤프를 가져오는 단계가 정리되어 있습니다.

실제 예시는 이 실패한 job을 참고합니다.

브로큰 마스터#

새로운 필수 업그레이드 중지점이 추가되면(3~4개 마일스톤마다) 새 PostgreSQL 덤프 빌드가 트리거됩니다. 경우에 따라 이로 인해 master 파이프라인에서 db:migrate:multi-version-upgrade job 이 실패할 수 있습니다. 예를 들어 추가 테이블이 시딩되면, 이러한 시딩 테이블이 없던 이전 덤프에서는 놓쳤을 수 있는 마이그레이션 오류를 탐지하는 데 도움이 됩니다.

브로큰 마스터 상황의 워크플로는 다음과 같습니다.

  1. 오류를 일으킨 마이그레이션을 검색해 근본 원인 MR을 식별합니다. 예를 들면 실패한 job의 db/migrate/20240416123401_add_security_policy_management_project_id_to_security_policies.rb 입니다.
  2. 해당 MR을 되돌릴지 아니면 수정 작업을 진행할지 논의하기 위해 마이그레이션을 도입한 관련 팀에 연락합니다.
    • 해당 팀과 연락이 닿지 않으면 #database Slack 채널에 게시합니다.
  3. 수정이나 되돌리기 작업이 진행되는 동안에는 CI/CD Settings 페이지에서 DISABLE_DB_MULTI_VERSION_UPGRADE=true를 설정해 job을 일시적으로 비활성화하면 master 파이프라인의 차단을 해제할 수 있습니다.
    • job을 비활성화할 때는 #master-broken Slack 채널에 공지합니다.
  4. job 안정성 추적 이슈 #458402에 메모를 추가합니다.
  5. CI/CD Settings에서 DISABLE_DB_MULTI_VERSION_UPGRADE를 제거해 job을 다시 활성화합니다.

데이터베이스 가져오기 실패#

외부 의존성 때문에 gitlab:db:configure 이전의 설정 단계에서 job 이 실패하는 경우에는 GitLab 프로젝트 CI 변수에 DISABLE_DB_MULTI_VERSION_UPGRADE=true를 설정해 job을 비활성화하면 브로큰 마스터의 차단을 해제할 수 있습니다.