繁体   English   中英

Jenkins 注入环境变量适用于批处理命令,但不适用于 powershell

[英]Jenkins Inject Environment variable works with batch command but not powershell

我正在处理 Jenkins 中一个非常奇怪的异常情况,这对我来说完全没有意义。 本质上,Jenkins 对于 powershell 命令的行为与批处理命令的行为不同。

我的目标是将环境变量(或参数)从一个 Jenkins 作业传递到另一个。 然而,要传递的这个变量是在第一个作业的运行时生成的。

我做了一个假项目来测试传递的变量,我能够通过添加一个构建步骤来将变量回显到节点上的 env.props 文件中,然后使用参数化触发器插件调用下一个作业。 我能够在这个测试场景中让它很好地工作,但是当我尝试在实际构建作业(依赖于 powershell 脚本)中实现相同的步骤时,它不起作用。

之后,经过大量的反复试验,我发现当我使用 Windows 批处理命令将变量回显到 props 文件中,然后将变量注入作业时 - 它工作得很好。 但是,当我使用 powershell 命令执行完全相同的操作时,即使我使用完全相同的代码行,它也不会将变量注入回作业中。 它仍然将变量写入文件,但 Jenkins 不会将该变量“重新注入”到作业的 env 变量中,即使我使用完全相同的步骤来执行此操作。

该命令本质上是这样的:

echo Testvar=Somevalue > C:\Jenkins\env.props

两者都成功地将字符串写入 props 文件,但是当使用 powershell 命令完成时,Jenkins 不会从运行中吸收 txt。 几乎就好像 powershell 正在以 Jenkins 无法读取但在我看来完全相同的方式对其进行编码。

有任何想法吗?

原来,这是编码!

echo "string" > file.txt 

在批处理中不会产生与 powershell 相同的结果。

切换到

echo "string" | out-file -encoding ASCII file.txt 

成功了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM