Vì vậy, sau khi điều tra, giả ban đầu của tôi là một phần sai: các cuộc gọi đến các cmdlet Powershell mới làm chờ đợi để hoàn thành công, trừ cho Set-AzureDeployment -newStatus "Running"
.
Điều này là tốt, vì chúng tôi không còn cần phải có các cuộc gọi đến Get-OperationStatus
được phân tán qua tập lệnh; tuy nhiên, điều này không tốt khi Set-AzureDeployment
rời khỏi quá trình triển khai.
Chúng tôi có thể gọi Get-AzureDeployment
, và lặp lại qua số RoleInstanceList
để tìm hiểu điều gì đang diễn ra. Giống như vậy:
function Get-StagingReady {
$stagingStatus = Get-AzureDeployment $azureService -slot staging
if (-not $($stagingStatus.Status -eq "Running")) {
Write-Host $(" ... ... Staging slot status is not Running; value is " + $stagingStatus.Running)
return $False
}
if (-not $stagingStatus.RoleInstanceList) {
Write-Host " ... ... Staging slot has no instances configured yet."
return $False
}
$notReady = $False
Foreach ($roleInstance in $stagingStatus.RoleInstanceList) {
if (-not $($roleInstance.InstanceStatus -eq "ReadyRole")) {
Write-Host $(" ... ... ... Staging slot instance " + $roleInstance.InstanceName + " has status " + $roleInstance.InstanceStatus)
$notReady = $True
}
}
if ($notReady) {
Write-Host " ... ... One or more instances not running."
return $False
}
Write-Host " ... Staging slot ready for use."
return $True
}
function Wait-ForStagingToBeReady {
while (-not $(Get-StagingReady)) {
Write-Host " ... ... Staging slot not ready, waiting 15 seconds for Azure to spin up instances."
Start-Sleep -s 15
}
}
function Start-Staging {
Write-Host " ... Starting staging slot."
$staging = Get-Staging $azureService
$result = Set-AzureDeployment `
-Status `
-serviceName $azureService `
-slot "Staging" `
-newStatus "Running"
if (-not $?) {
Write-Host
Write-Host "Unable to start staging slot."
Write-Host "DEPLOY FAILED"
Write-Host
exit 1
}
Wait-ForStagingToBeReady
Write-Host " ... Deployment in Staging slot started."
}
Nguồn
2012-07-09 14:37:49
Ngoài ra, tôi dường như không thể cài đặt các phiên bản cũ hơn của lệnh ghép ngắn Powershell; chúng không thành công trên trình kiểm tra phụ thuộc, vì có vẻ như 1,6 của SDK không khả dụng nữa ... –
v1.6 Tải xuống SDK là [tại đây] (http://www.microsoft.com/en-us/download /details.aspx?id=28045), trong trường hợp bạn quyết định đi tuyến đó. –
Xem câu trả lời của tôi bên dưới. Nói chung các lệnh ghép ngắn _do_ đợi hoàn thành, ngoại trừ 'Set-AzureDeployment', tất nhiên là cái chúng ta muốn đợi! Nhưng chúng tôi có các bit liên quan, chúng tôi sẽ cần phải sắp xếp này. –