Я хочу видеть индикатор выполнения, который отображается в PowerShell на моей консоли jenkins.
Прямо сейчас я использую код PowerShell:
Start-BitsTransfer -DisplayName "File Download" -Source $Source -Destination $Destination -Asynchronous
$Bits = Get-BitsTransfer | where {$_.DisplayName -eq "File copy"}
While ($Bits.JobState -eq "Transferring" -or $Bits.JobState -eq "TransientError" -or $Bits.JobState -eq "Connecting" -or $Bits.JobState -eq "Error" -and $pct -ne 100){
if ($Bits.JobState -eq "Error"){
Resume-BitsTransfer -BitsJob $Bits
}
$pct = [int](($Bits.BytesTransferred*100) / $Bits.BytesTotal)
Write-Progress -Activity "Copying file..." -CurrentOperation "$pct% complete"
}
Подводя итог этим загрузкам бит и показывает прогресс по пути. Этот фрагмент кода отлично работает при запуске из PowerShell. Но когда я запускаю то же самое в Jenkins, я не вижу индикатора выполнения.
Я пишу то же самое в общей библиотеке в groovy, который выглядит примерно так:
def commandToDownloadAsynchronously = []
commandToDownloadAsynchronously.add("Start-BitsTransfer -DisplayName \"${displayName}\" -Source ${someVal} -Destination ${someBuild} -Asynchronous")
commandToDownloadAsynchronously.add("\$Bits = Get-BitsTransfer | where {\$_.DisplayName -eq \"${displayName}\"}")
commandToDownloadAsynchronously.add("While (\$Bits.JobState -eq \"Transferring\" -or \$Bits.JobState -eq \"TransientError\" -or \$Bits.JobState -eq \"Connecting\" -or \$Bits.JobState -eq \"Error\" -and \$pct -ne 100){\n" +
"\$pct = [int]((\$Bits.BytesTransferred*100) / \$Bits.BytesTotal)\n" +
"Write-Progress -Activity \"Completion Percentage\" -CurrentOperation \"\$pct% complete\"}")
commandExecutors.executePowerShellCommandList(script, commandToDownloadAsynchronously)
где CommandExecutors. groovy имеет следующую функцию:
static def executePowerShellCommandList(script, commandList) {
try {
def finalCommandList = ""
commandList.each{ value ->
finalCommandList = finalCommandList.toString().trim() + value.toString().trim() + ";"
}
script.powershell finalCommandList.trim()
} catch (err) {
return false
}
return true
}
Консоль конвейера со сценарием powershell не отображает прогресс в реальном времени в консоли jenkins. Есть ли способ, если я хочу увидеть прогресс, который виден в PowerShell, также на консоли jenkins?