Jenkins Powershell输出

4
我希望使用Jenkins Powershell插件捕获一些变量的输出,以便在作业的其他地方使用。这是否可能?我的目标是以某种方式构建最新的标签,而powershell脚本旨在实现此目标,将输出到文本文件不会有所帮助,因为似乎分叉了该过程,无法使用环境变量。

用于工作中的其他地方 - lingo_journey
1
好的,设置环境变量?$env:TestVariable = "这是一个测试环境变量。" - 4c74356b41
不幸的是,该进程似乎已经分叉并且环境变量无法工作 :( - lingo_journey
嗯,我认为没有明确的方法可以做到那一点。输出到文本文件? - 4c74356b41
@4c74356b41 我的目标是以某种方式构建最新的标签,而PowerShell脚本旨在实现这一目标,不幸的是输出到文本文件并不能帮助解决问题。 - lingo_journey
如果与EnvInject插件结合使用,它可以提供帮助。您可以使用PowerShell创建一个包含键值对的文本文件,然后使用EnvInject插件将其导出到构建中。 - izzekil
4个回答

2
除了EnvInject之外,在构建步骤之间共享数据的另一种常见方法是将结果存储在作业工作区中的文件中。
这个想法是跳过使用环境变量,直接写入/读取文件。

1

看起来唯一的解决方案是与EnvInject插件结合使用。您可以从powershell创建一个带有键值对的文本文件,然后使用EnvInject插件将它们导出到构建中。


0

你应该为这个任务创建一个持久化的工作空间,然后可以将需要保存的数据保存到文件中。其他任务可以访问这个持久化的工作空间或将其用作自己的工作空间,只要它们在同一节点上。

另一个选择是使用Jenkins内置的构件保留功能,在作业配置页面的末尾,将有一个保留匹配文件的选项(例如*.xml或last_build_number)。然后会给这些文件分配一个特定的地址,其他任务可以使用该地址,无论它们在哪个节点上,该地址可以在主节点或节点上,如果我没记错的话。


0

如果你只是想从Powershell中读取一个对象,你可以在Powershell中将其转换为JSON字符串,然后在Groovy中将其转换回来。以下是一个例子:

def pathsJSON = powershell(returnStdout: true, script: "ConvertTo-Json ((Get-ChildItem -Path *.txt) | select -Property Name)");
def paths = [];
if(pathsJSON != '') {
    paths = readJSON text: pathsJSON
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接