在工作流脚本中使用Jenkins Java API

时间:2015-10-16 15:14:35

标签: groovy jenkins jenkins-workflow

我正试图在Workflow groovy脚本中利用Jenkins Java。

我发现很难掌握我能做什么和不能做什么,有没有什么好的资源可以做到这一点。

目前我正在尝试做的是获取工作区路径,我已经到了

    res.end(JSON.stringify([rows[0],rows[1]]));

但这似乎是一个死胡同,似乎没有任何有用的东西你可以实际使用这些对象。

如果有人能指出任何资源,提供可以这样做的有用事情的例子,或者帮助我解决工作区路径很大的具体问题。

3 个答案:

答案 0 :(得分:5)

您可以使用标准工作流程步骤pwd()来获取工作空间路径,而无需使用Jenkins API。

就其他情况而言,没有特别的文档总结了您可以从Workflow脚本中使用Jenkins API做什么,因为它只是Jenkins API允许您执行的任何操作(请参阅Javadoc) 。需要注意的两点需要注意:

  • 几乎所有此类调用都将被Groovy沙箱拒绝(许多对白名单都不安全)。这意味着除非您是管理员,否则无法在安全的Jenkins安装中编写此类脚本。 more
  • 大多数API对象不是Serializable,这意味着您必须将其用途封装在标有@NonCPS注释的方法中。该方法可以作为参数并返回任何可序列化(或原始)类型。 more
  • 目前,没有受支持的方式来访问在本地工作空间上下文中定义的Jenkins模型对象。 JENKINS-28385会有所帮助。与此同时,通常有解决方法;例如,如果您想在Node块中使用node {},则可以使用Jenkins.instance.getNode(env.NODE_NAME)

答案 1 :(得分:0)

这并不能回答您的首要问题,但是env.WORKSPACE将为您提供工作区的绝对路径:)在工作流作业配置中打开代码段生成器,向下滚动,您将看到所有的列表可用的环境变量。

答案 2 :(得分:0)

如果您尝试获取工作区路径以读取某些文件,则应该使用Job DSL和readFileFromWorkspace(filePath)。 如果您正在使用从属服务器,那么只有工作区路径并尝试使用new File(filePath)尝试读取文件可能不起作用。 更多细节在这里 https://github.com/jenkinsci/job-dsl-plugin/wiki/Job-DSL-Commands