powershell - 使用 powershell 设置 jenkins 管道变量会导致回车
问题描述
我正在将 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.```