我希望使用Jenkins Powershell插件捕获一些变量的输出,以便在作业的其他地方使用。这是否可能?我的目标是以某种方式构建最新的标签,而powershell脚本旨在实现此目标,将输出到文本文件不会有所帮助,因为似乎分叉了该过程,无法使用环境变量。
看起来唯一的解决方案是与EnvInject插件结合使用。您可以从powershell创建一个带有键值对的文本文件,然后使用EnvInject插件将它们导出到构建中。
你应该为这个任务创建一个持久化的工作空间,然后可以将需要保存的数据保存到文件中。其他任务可以访问这个持久化的工作空间或将其用作自己的工作空间,只要它们在同一节点上。
另一个选择是使用Jenkins内置的构件保留功能,在作业配置页面的末尾,将有一个保留匹配文件的选项(例如*.xml或last_build_number)。然后会给这些文件分配一个特定的地址,其他任务可以使用该地址,无论它们在哪个节点上,该地址可以在主节点或节点上,如果我没记错的话。
如果你只是想从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
}