Groovy 在工作流脚本中使用Jenkins Java API
我试图从工作流groovy脚本中利用Jenkins Java 我发现很难掌握我能做什么和不能做什么,关于如何做到这一点有什么好的资源吗 现在我要做的是获取工作区路径,我已经得到了Groovy 在工作流脚本中使用Jenkins Java API,groovy,jenkins,jenkins-workflow,Groovy,Jenkins,Jenkins Workflow,我试图从工作流groovy脚本中利用Jenkins Java 我发现很难掌握我能做什么和不能做什么,关于如何做到这一点有什么好的资源吗 现在我要做的是获取工作区路径,我已经得到了 def jenkins = Jenkins.instance; def build = jenkins.getItem(env.JOB_NAME).getBuild(env.BUILD_NUMBER) 但这似乎是一个死胡同,似乎没有任何有用的东西,你实际上可以做这些对象 如果有人可以向我指出任何资源,这些资源提供了可
def jenkins = Jenkins.instance;
def build = jenkins.getItem(env.JOB_NAME).getBuild(env.BUILD_NUMBER)
但这似乎是一个死胡同,似乎没有任何有用的东西,你实际上可以做这些对象
如果有人可以向我指出任何资源,这些资源提供了可以这样做的有用的例子,或者帮助我解决获得工作区路径的具体问题,这将是非常好的。这并不能回答您的首要问题,但是env.WORKSPACE将为您提供工作区的绝对路径:)在工作流作业配置中打开代码段生成器,向下滚动,您将看到所有可用环境变量的列表。您可以使用标准工作流步骤
pwd()
获取工作区路径,而无需使用Jenkins API
就其他情况而言,没有特定的文档总结您可以从工作流脚本使用Jenkins API做什么,因为它只是Jenkins API允许您通常做的任何事情(请参阅)。您需要注意两个注意事项:
- 几乎所有这样的调用都会被Groovy沙盒拒绝(而且许多调用不安全,无法进入白名单)。这意味着您不能在安全的Jenkins安装中编写此类脚本,除非您是管理员李>
- 大多数API对象将不可
,这意味着您必须将它们的使用封装在标有序列化
注释的方法中。该方法可以作为参数并返回任何可序列化(或基元)类型李>@NonCPS
- 目前,没有受支持的方式来访问在本地工作区上下文中定义的Jenkins模型对象。会有帮助的。与此同时,经常有变通办法;例如,如果希望在
块中使用节点{}
,可以使用节点
Jenkins.instance.getNode(env.Node_NAME)
readFileFromWorkspace(filePath)
。
如果您使用的是从机,那么仅仅拥有一个工作区路径并尝试使用新文件(filePath)
读取文件可能不起作用。
更多细节在这里
env.WORKSPACE给了我空值,它在代码段生成器中确实说它不受支持。对于这种特殊情况,您只需使用
pwd()
步骤即可。