Jenkins插件,如何在远程节点上执行系统命令?

V. *_*hov 5 jenkins jenkins-plugins

我们公司的Jenkins有主节点和两个从节点.我正在为它编写插件.插件的一个功能是从svn中检出一些文件.无法从插件中提取此操作.为此,我从我的插件的java代码执行控制台命令"svn checkout".问题是来自svn的文件被签出到master,而不是slave节点.如何将文件签出到奴隶?

hyd*_*yde 8

首先你有这些对象,通常作为perform方法的参数接收:

Launcher launcher;
AbstractBuild<?, ?> build;
BuildListener listener;
Run Code Online (Sandbox Code Playgroud)

然后你创建并添加了一个参数到一个argumentListBuilder,可能是这样的:

ArgumentListBuilder command = new ArgumentListBuilder();
command.addTokenized("xcopy /?");
Run Code Online (Sandbox Code Playgroud)

然后,做一些像:

ProcStarter ps = launcher.new ProcStarter();
ps = ps.cmds(command).stdout(listener);
ps = ps.pwd(build.getWorkspace()).envs(build.getEnvironment(listener));
Proc proc = launcher.launch(ps);
int retcode = proc.join();
Run Code Online (Sandbox Code Playgroud)

ProcStarter将在launcher实例指定的节点上运行该命令.但是请在使用之前至少浏览一下上述所有类的javadoc,上面不是直接从工作代码中复制粘贴.