Я использую файл Jenkins Pipeline для автономного конвейерного задания, я пытаюсь найти последнюю папку, созданную в каталоге, и назначить ее переменной.
Это работает отлично, за исключением того факта, чтомошеннический возврат каретки на выходе.Я не могу использовать Write-Host -NoNewLine
, так как это не сделает его выходным параметром.
Я попытался заменить любые возвраты каретки в имени файла, я перебрал символы ascii - это просто кажетсячто по какой-то странной причине у Powershell всегда есть этот мошеннический «возврат каретки», которого нет при использовании Write-Output
.
pipeline {
agent {
label 'orchestration'
}
environment {
CLIENT_NAME = 'Test Client'
LATEST_ORCHESTRATION_VERSION = powershell(returnStdout: true, script: '''
Write-Output (gci D:\\Orchestration | ? { $_.PSIsContainer } | sort CreationTime)[-1].Name
''')
}
stages {
stage('Load') {
steps {
bat('dotnet run "D:\Orchestration\%LATEST_ORCHESTRATION_VERSION%" -d %WORKSPACE% -c %CLIENT_NAME%')
}
}
}
}
Запуск этого в Powershell работает нормально, но работает, если вы делаете Write-Output 'foo'
вПохоже, что Powershell ISE копирует возврат каретки (если я запускаю приведенный выше скрипт powershell исключительно в powershell, то, насколько я вижу, он возвращается нормально)
Когда я запускаю конвейер, переменная окружения отлично проходит, но потому чтокажется, что возврат каретки существует, и в консоли jenkins появляется следующая ошибка:
D:\workspace\Test Client>dotnet run "D:\Orchestration\1.0.0.28
Couldn't find a project to run. Ensure a project exists in D:\workspace\Test Client, or pass the path to the project using --project.```