首页 > 解决方案 > 使用 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.```

标签: powershelljenkins.net-corejenkins-pipeline

解决方案


推荐阅读