2009-06-09 9 views
2

저는 프로덕션, 테스트 및 개발을위한 지사가있는 결합 된 웹/클라이언트 응용 프로그램을 만들고 있습니다. 프로덕션 및 테스트 서버에 업데이트를 배포하기 위해 svn post commit 후크를 사용하고 있습니다. 클라이언트 앱은 프로덕션, 테스트 또는 개발에 따라 다른 URL을 가리킬 필요가 있습니다. 전복을 사용하여 이것을 어떻게 관리 할 수 ​​있습니까? 내가 생각 한 옵션은 다음과 같습니다Subversion을 사용하여 생산/테스트/개발 구성 정보를 어떻게 관리 할 수 ​​있습니까?

옵션 1
나뭇 가지 사이에 통합되지 않습니다 지점 별 세부 파일을 보관하십시오.

이 옵션은 빌드 관리의 관점에서는 쉽지만 병합이 수행 될 때마다 변경 사항을 무시해야하므로 오류가 발생하기 쉽습니다.

옵션 2
생산, 테스트 만들기 및 개발에 상관없이 어느 지점 클라이언트 빌드하지 않고, 올바른 바이너리를 아래로 끌어 svn의 후크에 의존하고 있습니다.

어떻게 처리합니까? 더 좋은 아이디어?

답변

1

내가 선호하는 것은 프로젝트 특정 구성 파일을 소스 제어에 체크인하지 않고 환경 변수 및 기타 구성 요소의 내용을 소스 제어에서 공통 폴더에 보관하는 것입니다. 그런 다음 지정된 프로젝트, 솔루션, 환경에서 주어진 시간에 필요한 항목에 따라 로컬 빌드, 빌드 자동화 또는 배포 스크립트의 일부로 구성 파일이 생성됩니다. 이것은 간단한 텍스트 파일, XML 템플릿 또는 필요에 따라 스파크 뷰 엔진과 같은 좀 더 복잡한 것으로 할 수 있습니다. 템플릿이 필요한 것보다 더 복잡하다면 (또한 일반적으로) 템플릿을 사용하면 규칙에 따라이 작업을 수행 할 수 있습니다. 이렇게하면 코드를 배포하는 위치에 관계없이 환경 별 구성을 정의 할 수 있습니다.

기본 설정 파일 (웹 구성, 응용 프로그램 구성 등)에 사용자 지정 구성 섹션을 정의하는 것이 관례입니다. 그런 다음 connection-strings-development.config, connection-strings-integration.config, connection-strings-testing.config, connection-strings-pre-production.config 및 connection-strings-production을 저장할 수 있습니다. 기본 소스 (또는 공통 폴더)의 설정. 빌드 프로세스는 적절한 연결 문자열 구성 파일을 삭제하고 간단히 connection-strings.config로 이름을 바꿉니다.

템플릿을 생성하면 환경 설정 파일과 환경 설정 파일이 동일하지만 배포시 이름을 변경하는 대신 적절한 구성 파일 이름을 사용하여 기본 구성 파일의 섹션을 간단하게 다시 작성할 수 있습니다.

구성 파일을 환경별로 정리하면 동일한 또는 유사한 스타일의 구성을 사용하는 많은 사이트를 관리하기 시작하면 특히 많은 유연성을 얻을 수 있습니다. 어떤 경우에도 자동 환경의 일부 측면에 따라 구성을 결정해야합니다!

2

우리의 응용 프로그램은 배포 된 각 환경에 대한 구성 파일과 별도의 디렉토리를 유지합니다. 빌드 서버가 특정 환경을 위해 배포 할 작업을 실행할 때 config 파일을 가져올 디렉토리를 알고 있습니다. 올바른 디렉토리에 대한 포인터는 빌드 서버 (이 경우에는 Pulse)에 대한 빌드 정의의 일부입니다. 해당 펄스 작업에 대해 코드가 빌드 된 분기도 작업 사양의 일부입니다. 이렇게하면 배포 서버가 분기와 독립적으로 결정되므로 새 버전의 서버를 릴리스하고 데이터베이스를 용도 변경 할 수 있습니다.

+ dev-server 
+---jdbc.properties 
+---build.properties 
+ test-server 
+----jdbc.properties 
+---build.properties 

설정 파일은 응용 프로그램의 나머지 부분 (줄기, 가지 등의 형제 ...)로 분기되어 있지 않습니다. 그들은 svn 나무에 자신의 자리를 가지고 있으며 각각의 지점에서 Subversion external definition으로 끌어 당깁니다.

우리는 각 브랜치가 여러 서버를 배포 할 수 있으므로 (dev, test, build, automation 등) 이렇게하면됩니다.

+0

아,이 말이 맞습니다. 또한 지사와 특정 전개 환경 사이에 어떤 결합도없는 것을 좋아합니다. 정보 주셔서 감사합니다! – Luke