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

use*_*723 3 groovy jenkins jenkins-workflow

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

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

我现在要做的就是获得工作空间路径,我已经到了

def jenkins = Jenkins.instance;
def build = jenkins.getItem(env.JOB_NAME).getBuild(env.BUILD_NUMBER)
Run Code Online (Sandbox Code Playgroud)

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

如果有人可以指出我的任何资源,提供可以这样做的有用的事情的例子,或者帮助解决我获得工作区路径的特定问题.

Jes*_*ick 5

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

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

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