db:migrate:multi-version-upgrade 작업
- GitLab 16.11에서 도입됨.
이 작업은 병합 요청 파이프라인의 테스트 단계에서 실행됩니다.
이 작업은 최신 필요한 업그레이드 정지에서 저자의 작업 브랜치까지의 다중 버전 업그레이드에 대해 마이그레이션이 통과하는지 확인합니다.
이를 위해, 테스트 데이터를 사용하여 최신으로 알려진 GitLab 버전 정지로부터 생성된 PostgreSQL 덤프에 대해 gitlab:db:configure
를 실행합니다.
데이터베이스 덤프는 PostgreSQL 덤프 생성기를 사용하여 생성되고 유지됩니다.
데이터로 데이터베이스를 시드하기 위해, 이 도구는 Data Seeder를 사용하며 bulk_data.rb
구성을 사용하여 모든 팩토리를 시드하고 db:seed_fu
를 사용하여 모든 db/fixtures
를 시드합니다.
최신 덤프는 필요한 정지의 최신 패치 릴리스를 위해 예정된 파이프라인에서 자동으로 생성됩니다.
문제 해결
데이터베이스 재구성 실패
이 실패는 일반적으로 작업 중인 브랜치의 실제 마이그레이션 오류로 인해 발생합니다.
로컬에서 실패를 재현하려면 마이그레이션 업그레이드 테스트 가이드를 따르세요.
이 가이드는 최신 PostgreSQL 덤프를 로컬 GitLab 개발 키트 또는 GitLab Docker 인스턴스에 가져오는 방법을 설명합니다.
실제 사례를 참조하려면 이 실패한 작업을 확인하세요.
깨진 마스터
새로운 필요한 업그레이드 정지가 추가될 때 (3개 또는 4개 이정표마다), 새로운 PostgreSQL 덤프의 빌드를 촉발합니다.
이 경우, db:migrate:multi-version-upgrade
작업이 master
파이프라인에서 실패할 수 있습니다.
예를 들어, 새로 추가된 테이블이 시드되는 경우, 이는 이러한 시드된 테이블이 포함되지 않은 이전 덤프에서 놓쳤을 수도 있는 마이그레이션 오류를 감지하는 데 도움이 됩니다.
깨진 마스터 사례의 워크플로우:
- 오류를 일으킨 마이그레이션을 검색하여 루트 원인 MR을 식별합니다. 예를 들어, 실패한 작업의
db/migrate/20240416123401_add_security_policy_management_project_id_to_security_policies.rb
- 필요 시 데이터베이스 재구성 실패에서 설명된 대로 로컬에서 디버깅합니다.
- 마이그레이션을 도입한 관련 팀에 연락하여 MR을 되돌려야 하는지 또는 수정 작업이 진행될 것인지 논의합니다.
- 팀이 없는 경우,
#database
Slack 채널에 게시합니다.
- 팀이 없는 경우,
- 수정 작업이나 되돌리기가 진행되는 동안, CI/CD 설정 페이지에서
DISABLE_DB_MULTI_VERSION_UPGRADE=true
를 설정하여master
파이프라인의 차단을 해제할 수 있습니다.- 작업을 비활성화 할 때,
#master-broken
Slack 채널에 이를 알립니다.
- 작업을 비활성화 할 때,
-
작업 안정성 추적 이슈#458402에 주석을 추가합니다.
- CI/CD 설정에서
DISABLE_DB_MULTI_VERSION_UPGRADE
를 제거하여 작업을 복구합니다.
데이터베이스 가져오기 실패
작업이 gitlab:db:configure
전에 외부 종속성으로 인해 설정 단계에서 실패하는 경우,
DISABLE_DB_MULTI_VERSION_UPGRADE=true
를 GitLab 프로젝트 CI 변수에 설정하여 작업을 비활성화할 수 있습니다
손상된 마스터를 차단 해제하십시오.
디버깅을 신속하게 진행하려면 Self-Managed Platform 팀에 문의하세요.