通过jenkins post-groovy脚本写入文件

Nat*_*ier 4 groovy hudson jenkins

我想做一些非常简单的事情:通过jenkins groovy post-build脚本插件创建/写入位于从站的远程工作空间中的文件

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)
}
Run Code Online (Sandbox Code Playgroud)

最后一行失败,因为该文件不存在.我认为它与指向主执行器的输出流有关,而不是远程工作区,但我不确定:

Groovy script failed:

java.io.FileNotFoundException: /views/build_view/temp/module.properties (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

我没有正确写入文件吗?

AJ.*_*J.P 11

在写入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
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!


mal*_*cot 2

The post build plugin runs on the manager and doing it as you say will fail if you are working with slaves!在插件页面(您提供的链接)上搜索单词,看看那里的解决方法是否有帮助。