예, 우리는 여러 패키지를 만듭니다 (환경마다 하나씩). 우리는 VMM 크기 (일례)와 같은 것을 패치하는 다른 powershell 스크립트를 가지고 있습니다 :
param(
[parameter(Mandatory=$true)]
[string]$fileToPatch,
[parameter(Mandatory=$true)]
[string]$roleName,
[parameter(Mandatory=$true)]
[validateSet("ExtraSmall", "Small", "Medium", "Large", "ExtraLarge", "A5", "A6", "A7")]
[string]$vmsize = 'Small'
)
# MAIN
$xml = New-Object System.Xml.XmlDocument
$xml.Load($fileToPatch)
$namespaceMgr = New-Object System.Xml.XmlNamespaceManager $xml.NameTable
$namespace = $xml.DocumentElement.NamespaceURI
$namespaceMgr.AddNamespace("ns", $namespace)
$xpathWorkerRoles = "/ns:ServiceDefinition/ns:WorkerRole"
$xpathWebRoles = "/ns:ServiceDefinition/ns:WebRole"
$Roles = $xml.SelectNodes($xpathWebRoles, $namespaceMgr) + $xml.SelectNodes($xpathWorkerRoles, $namespaceMgr)
$Roles | Where-Object { $_.name -eq $RoleName} | % { $_.vmsize = $vmsize; Write-Host 'Patched vmsize to' $vmsize 'for' $_.name }
$xml.Save($fileToPatch)
배포를 위해 powershell을 사용하는 것을 고려하십시오 (cspack을 사용하여 패키지 빌드하기). 그런 다음 패키지를 빌드하기 전에 각 특정 환경에 대한 정의를 패치 할 수 있습니다. –
빌드 서버가 현재 ServiceDefinition에서 패키지를 생성 중입니다. 여러 개의 패키지를 만드십니까? 각 환경마다 하나씩? 패키지를 만들기 전에 어떻게 정의를 패치합니까? – davenewza