如何在Jenkins groovy后期构建插件中重用groovy脚本?
我有一些groovy代码,我计划在Jenkins groovy多任务后期构建插件中重用这些代码。我怎样才能做到这一点?是否有一个地方可以将脚本存储在全局变量中,并在需要的作业中调用它?您可以在groovy后期构建中加载Jenkins master上的任何groovy文件并执行它。例如,您可以在c驱动器上有一个特殊的目录,其中包含所有常用脚本。稍后,我将使用一些代码更新我的答案,这些代码将向您展示如何加载脚本 更新 假设您的C:驱动器上有一个test.groovy文件,那么在groovy Postbuild中,它应该像下面一样简单:如何在Jenkins groovy后期构建插件中重用groovy脚本?,jenkins,groovy,Jenkins,Groovy,我有一些groovy代码,我计划在Jenkins groovy多任务后期构建插件中重用这些代码。我怎样才能做到这一点?是否有一个地方可以将脚本存储在全局变量中,并在需要的作业中调用它?您可以在groovy后期构建中加载Jenkins master上的任何groovy文件并执行它。例如,您可以在c驱动器上有一个特殊的目录,其中包含所有常用脚本。稍后,我将使用一些代码更新我的答案,这些代码将向您展示如何加载脚本 更新 假设您的C:驱动器上有一个test.groovy文件,那么在groovy Post
evaluate(new File("C:\\test.groovy"))
请查看的评论部分,了解更多示例和其他可能的方式。以下是对我有效的解决方案:
JENKINS_HOME/scriptler/scripts
目录中找到。这样我们可以避免手动将文件复制到Jenkins master李>
def env=manager.build.getEnvironment(manager.listener)evaluate(新文件(env['JENKINS\u HOME']+“\\scriptler\\scripts\\GroovyForPostBuild.groovy”)
这是以下文件的副本:
如果希望将Groovy脚本放在代码存储库中,并加载到工作区中的构建/测试从机上,那么需要注意Groovy Postbuild在主机上运行
对于我们来说,主服务器是Unix服务器,而构建/测试从属服务器是本地网络上的Windows PC。因此,在使用脚本之前,我们必须打开一个从主机到从机的通道,并使用一个到文件的通道
以下几点对我们起了作用:
// Get an Instance of the Build object, and from there
// the channel from the Master to the Workspace
build = Thread.currentThread().executable
channel = build.workspace.channel;
// Open a FilePath to the script
fp = new FilePath(channel, build.workspace.toString() + "<relative path to the script in Unix notation>")
// Some have suggested that the "Not NULL" check is redundant
// I've kept it for completeness
if(fp != null)
{
// 'Evaluate' requires a string, so read the file contents to a String
script = fp.readToString();
// Execute the script
evaluate(script);
}
//获取Build对象的实例,然后从中
//从主机到工作区的通道
build=Thread.currentThread()可执行文件
通道=build.workspace.channel;
//打开脚本的文件路径
fp=新文件路径(通道,build.workspace.toString()+“”)
//有些人认为“NOTNULL”检查是多余的
//我保存它是为了完整
如果(fp!=null)
{
//“Evaluate”需要字符串,因此将文件内容读取为字符串
script=fp.readToString();
//执行脚本
评估(脚本);
}
比你更重要。这个解决方案帮了我一半。以下是我为使其成为一个完整的解决方案所做的工作:我认为您的评论被截断了,因为我没有看到解决方案。。如果您愿意,您可以将您的解决方案添加为另一个答案,然后将其作为问题的最终解决方案。。这可能会帮助其他人。如果我的回答对你有帮助,请随意投票