2008-11-11 9 views
3

Windows 제공 서비스에는 다른 고객을 위해 구성 파일과 이진 자산 집합이 다릅니다. 현재 구성은 패키징 전에 손으로 수행되며 오류가 발생하기 쉽습니다. 각 고객별로 지점을 사용하고 패키지 빌드/스크립트로 고객의 지점을 트렁크로 자동 작성하는 방법에 대해 어떻게 생각합니까?릴리스 구성 관리

저는이 자동화 된 최대한 빨리 얻는 것보다 확장성에 덜 관심이 있습니다.

전체 패키지 내용은 SVN에 있지만 SVN 분기 및 병합은 너무 섬세하기 때문에 자동으로 작동 할 때 일관되게 작동하지 않습니다. 여러분이 생각을 좋아한다면 git-svn을 사용하려고 할 것입니다. 왜냐하면 희망적으로 병합을 덜 섬세하게 만들 것이기 ​​때문입니다. 설치 프로그램이 부적절한 디렉토리 트리를 건너 뛸 수 있도록 구성되어 있기 때문에 반드시 자산을 병합 할 필요는 없지만 구성이 간단하지는 않습니다.

+0

에 파일에 등록 하시겠습니까? – fglez

답변

2

얼마나 많은 사항을 변경해야하는지에 따라 달라집니다. 구성 파일의 경우, 단일 파일을 소스 제어하에 유지하고 빌드 스크립트를 사용하여 특정 환경 (또는 고객의 경우 클라이언트 특정) 항목을 설정하는 것을 좋아합니다. 바이너리

http://automaticchainsaw.blogspot.com/2008/02/automate-config-changes-for-different.html

, 그것은 아마도 그들이 어디에서 온 당신이 어떻게 그 많은 기능과 더 많은 관계를 가지고있다. 그것들이 코드 컴파일의 일부라면, 컴파일 과정이 이상적으로 당신이 필요로하는 것을 만들 것입니다. 그래픽과 같은 다른 리소스 인 경우 한 디렉터리 아래에 고객 별 폴더 집합이있을 수 있습니다. 빌드 스크립트는 스크립트에 전달 된 매개 변수를 기반으로 올바른 클라이언트 폴더를 가져옵니다. 이것은 기본적으로 당신이 당신의 질문에서 언급 한 지점과 병합 아이디어입니다.

다중 행 구성 변경 사항에 대한 이후 의견에 대해서는 xml로 가정하면 MSBuild 커뮤니티 작업에서 XmlMassUpdate 클래스를 살펴볼 수 있습니다. 나는 그것을 사용하지 않았지만 그것이 당신이 필요로하는 것처럼 보입니다.

+0

예, 이진 자산 관리는 정확히 어떻게 설정했는지 나타냅니다.텍스트 변경의 경우, 한 줄 필드 변경 수가 적지 만 여러 라인 변경 (전체 제거 또는 줄 추가)으로 인해 실제로 복잡해지기 시작하고 여전히 손으로 추적해야한다고 생각합니다. . –

0

당신은 언어를 언급하지 않지만, 당신이 conditional compilation 일을 고려해 볼 수 있습니다 :

#If FirstCustomer Then 
    ' <code specific to the FirstCustomer version>. 
#ElseIf SecondCustomer Then 
    ' <code specific to the SecondCustomer version>. 
#Else 
     ' <code specific to other versions>. 
#End If 
0

이 다른 고객, 환경 (QA, 스테이징, 생산, ...), 지역 (미국에 대한 일어날 수, EU, 아시아, ...) 또는 다른 응용 프로그램 유형 (웹 또는 데스크톱 클라이언트가 아닌 모바일 클라이언트를 제공 할 때 서버를 구성해야하는 경우).

보통 사람들은 오류가 발생하기 쉽고 안전하지 않은 수동으로 설정 파일을 유지합니다 (언급 한대로). 또는 Pedro가 언급 한대로 빌드 스크립트를 사용하여 구성 파일 안팎으로 올바른 값을 "엿보고 엿볼"수 있습니다. 이 접근법은 또한 구성에 영향을 미치는 모든 코드 변경에 대해 스크립트가 이상적이지 않은 것으로 변경되어야 함을 의미합니다. 또한이 스크립트 (언어가 무엇이든간에)를 디버깅하고 테스트하는 것은 일반적으로 불가능하지는 않더라도 어렵습니다.

정확한 문제에 직면하여 중앙 구성 서버를 기반으로 클라이언트에게 구성을 제공하는 솔루션을 개발했습니다. 이 서버는 값의 상속, 변경 사항의 감사 및 버전 관리, 템플리트 작성 및 런타임 변경 사항을 실시간으로 클라이언트에 전달합니다.

Google은 클라우드 호스팅 구성 관리 솔루션으로이 서비스를 출시하는시기에 가까워졌습니다. 시험해보고 싶다면 http://woot.configchief.com

관련 문제