我想做一些非常简单的事情:通过jenkins groovy post-build script plug-in
创建/写入位于奴隶远程工作区的文件def props_file = new File(manager.build.workspace.getRemote() + "/temp/module.properties")
def build_num = manager.build.buildVariables.get("MODULE_BUILD_NUMBER").toInteger()
def build_props = new Properties()
build_props["build.number"] = build_num
props_file.withOutputStream { p ->
build_props.store(p, null)
}
最后一行失败,因为该文件不存在。我认为它与指向主执行器的输出流有关,而不是远程工作区,但我不确定:
Groovy script failed:
java.io.FileNotFoundException: /views/build_view/temp/module.properties (No such file or directory)
我没有正确地写文件吗?
答案 0 :(得分:10)
在写入slave时,您需要先检查通道,然后才能成功创建文件句柄并开始读取或写入该文件:
if(manager.build.workspace.isRemote())
{
channel = manager.build.workspace.channel;
}
fp = new hudson.FilePath(channel, manager.build.workspace.toString() + "\\test.properties")
if(fp != null)
{
String str = "test";
fp.write(str, null); //writing to file
versionString = fp.readToString(); //reading from file
}
希望这有帮助!
答案 1 :(得分:2)
在插件页面(您提供的链接)上搜索单词The post build plugin runs on the manager and doing it as you say will fail if you are working with slaves!
,并查看其中的解决方法是否有帮助。
答案 2 :(得分:0)
文件夹/views/build_view/temp
是否存在?
如果没有,您需要执行new File( "${manager.build.workspace.remote}/temp" ).mkdirs()