-EDIT 03-
Я редактирую свой вопрос, потому что комментарии слишком малы.
Я наконец-то выполнил свою задачу. Мне пришлось отредактировать Publish-UpgradedServiceFabricApplication
, чтобы принять «CompareApplicationName» и «CompareMode». Затем он будет использовать их для определения списка сервисов, которые будут обновлены. Я должен был быть осторожен, чтобы не отменить повторную регистрацию ApplicationType, пока не завершу обновление всех приложений.
Извините, но мой юридический отдел не позволит мне опубликовать какой-либо действительный код, заявив, что он является IP-адресом компании. .
-EDIT 02-
Ошибка пользователя Оказывается, Get-VstsInput
не возвращает никакого значения при вызове из потока. Таким образом, все оценки были неправильными, и ошибка была поглощена потоком. Я переписываю, чтобы просто передать вызов на Publish-UpgradedServiceFabricApplication
.
-Оригинальное сообщение-
У меня есть сервисный кластер fabri c с несколькими работающими сервисами. Некоторые из них являются динамически создаваемыми службами, поэтому в ServiceManifest на них нет ссылок. xml
У меня есть пользовательская задача, которая обновляет динамически созданные службы последовательно, но это занимает часы. Я пытаюсь запустить Publish-UpgradedServiceFabricApplication
параллельно, чтобы я мог запустить все задания обновления одновременно. Задания начинаются (я думаю), но задача никогда не дожидается их окончания sh до окончания (и, следовательно, завершения заданий PS).
Я пытался добавить Do...While
l oop в состоянии задания, но оно по-прежнему преждевременно завершает задачу.
Как сохранить задачу активной во время выполнения обновления?
-EDIT-
Мне кажется, мне нужно предоставить пример, потому что мой код работает не так, как предполагалось. С учетом этого кода в задаче:
foreach($serviceapp in $servicefabricapp){
if(-not ($serviceapp.ApplicationName.OriginalString.StartsWith("fabric:/DynamicService"))) {
Write-Host "Application '$($serviceapp.ApplicationName.OriginalString)' does not start with 'fabric:/DynamicService' -SKIPPING"
continue
}
$foundTaxReturnApp = $true
Write-Host "Starting upgrade for $($serviceapp.ApplicationName.OriginalString)"
Start-Job -ScriptBlock $upgradeScriptBlock -ArgumentList $serviceapp.ApplicationName, $applicationPackagePath, $applicationParameterFile, $publishProfile, $isUpgrade, $upgradeParameters
Start-Sleep 5
}
$jobCount = (Get-Job | Where-Object{ $_.state -eq 'Running'}).Count
Do {
Start-Sleep -Seconds 30
Write-Host "Waiting for $jobCount jobs to finish..."
$jobCount = (Get-Job | Where-Object{ $_.state -eq 'Running'}).Count
} while ($jobCount -gt 0)
Get-Job
$jobCount = (Get-Job | Where-Object{ $_.state -eq 'Running'}).Count
Write-Host "Finished waiting, $jobCount jobs running."
Это вывод в конвейер. Между «обновлением для fabri c: / DynamicService-2019OA20200131__16_21_39» и «Ожиданием завершения 0 заданий до конца sh ...» не проходит. И ни одно из DynamicServices не будет обновлено.
Application 'fabric:/MyFabricSystem' does not start with 'fabric:/DynamicService' -SKIPPING
Starting upgrade for fabric:/DynamicService
VERBOSE: Exporting function 'New-PSWorkflowSession'.
VERBOSE: Exporting alias 'nwsn'.
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Job1 BackgroundJob Running True localhost ...
Starting upgrade for fabric:/DynamicService-2018CA20200128__13_35_06
3 Job3 BackgroundJob Running True localhost ...
Starting upgrade for fabric:/DynamicService-2018FA20200130__16_12_16
5 Job5 BackgroundJob Running True localhost ...
Starting upgrade for fabric:/DynamicService-2018GA20200130__16_12_16
7 Job7 BackgroundJob Running True localhost ...
Starting upgrade for fabric:/DynamicService-2018IA20200131__16_21_39
9 Job9 BackgroundJob Running True localhost ...
Starting upgrade for fabric:/DynamicService-2018IB20200131__16_21_39
11 Job11 BackgroundJob Running True localhost ...
Starting upgrade for fabric:/DynamicService-2018KA20200121__15_08_01
13 Job13 BackgroundJob Running True localhost ...
Starting upgrade for fabric:/DynamicService-2018OA20200131__16_21_39
15 Job15 BackgroundJob Running True localhost ...
Starting upgrade for fabric:/DynamicService-2018PA20200131__16_21_39
17 Job17 BackgroundJob Running True localhost ...
Starting upgrade for fabric:/DynamicService-2018SA20200130__16_12_16
19 Job19 BackgroundJob Running True localhost ...
Starting upgrade for fabric:/DynamicService-2018XA20200127__16_43_45
21 Job21 BackgroundJob Running True localhost ...
Starting upgrade for fabric:/DynamicService-2018YA20200124__15_17_35
23 Job23 BackgroundJob Running True localhost ...
Starting upgrade for fabric:/DynamicService-2019GA20200130__16_12_16
25 Job25 BackgroundJob Running True localhost ...
Starting upgrade for fabric:/DynamicService-2019OA20200131__16_21_39
27 Job27 BackgroundJob Running True localhost ...
Waiting for 0 jobs to finish...
1 Job1 BackgroundJob Completed True localhost ...
3 Job3 BackgroundJob Completed True localhost ...
5 Job5 BackgroundJob Completed True localhost ...
7 Job7 BackgroundJob Completed True localhost ...
9 Job9 BackgroundJob Completed True localhost ...
11 Job11 BackgroundJob Completed True localhost ...
13 Job13 BackgroundJob Completed True localhost ...
15 Job15 BackgroundJob Completed True localhost ...
17 Job17 BackgroundJob Completed True localhost ...
19 Job19 BackgroundJob Completed True localhost ...
21 Job21 BackgroundJob Completed True localhost ...
23 Job23 BackgroundJob Completed True localhost ...
25 Job25 BackgroundJob Completed True localhost ...
27 Job27 BackgroundJob Completed True localhost ...
Finished waiting, 0 jobs running.
##[debug]Leaving D:\a\_tasks\DynamicServiceUpgrade_4ec0e9dc-0f0a-47ff-86e3-ca0ae22d21d9\0.0.31\taskmain.ps1.