InfoGrab DocsInfoGrab Docs

db:migrate:multi-version-upgrade job

GitLab에서 머지 리퀘스트 파이프라인의 멀티 버전 업그레이드 마이그레이션 검증을 수행하는 db:migrate:multi-version-upgrade job에 대해 설명합니다.

히스토리 GitLab 16.11에서 도입됨 . 이 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이 실패할 수 있습니다. 예를 들어, 새 추가 테이블이 시딩된 경우, 해당 시딩 테이블 없이는 이전 덤프에서 놓쳤을 수 있는 마이그레이션 오류를 탐지하는 데 도움이 됩니다. 브로큰 마스터 케이스의 워크플로: 오류를 일으킨 마이그레이션을 검색하여 근본 원인 MR을 식별합니다. 예를 들어, 실패한 job의 db/migrate/20240416123401_add_security_policy_management_project_id_to_security_policies.rb 데이터베이스 재구성 실패 에 설명된 대로 필요 시 로컬에서 디버그합니다. 해당 MR을 되돌려야 할지, 아니면 수정 작업을 진행할지 논의하기 위해 마이그레이션을 도입한 관련 팀에 연락합니다. 팀이 응답 가능하지 않은 경우, #database Slack 채널에 게시합니다. 수정 또는 되돌리기 작업이 진행되는 동안, CI/CD Settings 페이지 에서 DISABLE_DB_MULTI_VERSION_UPGRADE=true 를 설정하여 job을 일시적으로 비활성화함으로써 master 파이프라인의 차단을 해제할 수 있습니다. job을 비활성화할 때는 #master-broken Slack 채널에 공지합니다. job 안정성 추적 이슈#458402 에 메모를 추가합니다. CI/CD Settings에서 DISABLE_DB_MULTI_