질문
프로덕션 배포에 SVN을 사용 하지 않아야 하는 합법적 인 이유가 있습니까? 아니면 이것은 단지 개인적인 취향의 경우이며 SVN에 대한 실제 사례는 없습니까?
배경
내 직장에는 SVN에 릴리스 태그 지정 문화가 있으며 프로덕션을 직접 사용 svn co
하거나 svn switch
포함 하여 다양한 웹 서버에 해당 릴리스를 직접 배포합니다 .
빌드 및 배포 스크립트 또는 일부 형식 또는 자동 배포를 사용하지 않으면 문서화되지 않았으므로 통합 환경 설정이 손실된다고 생각하기 때문에 개인적으로 이것에 문제가 있습니다. 그러나 그 이상으로 간과 된 일, 아직 못생긴 머리를 아직 걷지 않은 일을하는 데 숨겨진 위험이있을 수 있다고 생각합니다.
다양한 환경 (스테이징, 사전 제작, 프로덕션 등)에 코드를 배포 할 책임이있는 운영 직원에게 우려를 표명했습니다. 그들의 주장은 지금까지 아무런 변화가 없었지만 지금까지 잘 작동했다는 주장이었습니다.
편집하다:
빌드 및 배포에 대한 의미 :
예를 들어, 개발자에게 특정 환경에 추가 된 web.config 설정이 필요한 경우. Web.config는 일반적으로 svn에 보관되지 않으므로 이러한 파일은 자동 빌드 스크립트 형식없이 수동으로 업데이트됩니다. 따라서 분실되거나 OPS가 릴리스를 위해 web.config에 필드를 추가하는 것을 잊어 버린 경우 문제가 있습니다.
XMLPoke를 사용하여 특정 환경에 적합한 web.config를 자동으로 생성하는 빌드 스크립트는 각 환경에 필요한 모든 변경 사항을 문서화하는 버전 화 가능한 스크립트가 있다는 점에서 이상적입니다.
현재 빌드 및 배포 방법
문제가되는 프로젝트의 경우 개발자가 수동으로 릴리스를 빌드하면 다른 프로젝트에는 NANT 또는 MSBuild (확인)로 자동화 된 빌드 단계가 있습니다.
대부분의 프로젝트에 대한 데이터베이스 마이그레이션은 DB 스크립트 또는 마이그레이션 스크립트 (Migrator.NET) 또는 CMS 패키지를 통해 이루어집니다.
CI는 일반적으로 Team City에서 체크인 단위로 수행되며, 모든 티켓은 지점에서 수행 된 후 트렁크에 체크인하기 전에 유효성 검사 및 정확성 / 품질에 대해 동료 검토를 수행하는 코드 검토 프로세스가 있습니다 (잘 작동 함).
그러나 실제 코드 배포는 항상 태그가있는 릴리스의 체크 아웃 또는보다 일반적으로 SVN 스위치를 통해 SVN을 통해 이루어집니다. 이는 배포 프로세스의 일부로 리포지토리를 사용하고 있다는 점에서 이상합니다.
구성은 일반적으로 자주 변경되지 않으며 구성 파일에있는 유일한 환경 환경 정보입니다. 다른 모든 것은 db에 있습니다.
이 작업이 잘못되지 않도록하십시오. 잘 작동합니다. 그러나 자동화 된 빌드 및 배포를 시도하고 추진하고 싶습니다. 나는 이것을 Rails 및 Capistrano와 함께 사용했으며 Cygwin, Nant 및 SSH를 사용하는 개인 프로젝트에 사용했습니다.
더 중요한 것은 동료가 자동 빌드 및 배포를 사용하도록 변경하려면 매우 구체적인 유효한 인수가 필요하다는 것입니다.
아니면 SVN을 사용하여 프로덕션 환경에 배포하는 것에 대한 실제 유효한 주장이 없습니까?