在Jenkins上用Groovy创建@extension类?

时间:2013-07-23 09:48:47

标签: groovy jenkins classloader jenkins-plugins

我在jenkins中使用Groovy脚本屏幕,即http://localhost:8080/jenkins/script,这非常棒。我写了一个简单的扩展名:

jenkins = jenkins.model.Jenkins.getInstance()

@hudson.Extension
public class MyGroovyListener extends hudson.slaves.ComputerListener {
    public void onOnline( computer, taskListener ) {
        System.out.println("groovy onOnline " + computer + " " + taskListener );
    }
}

现在我希望以某种方式注册扩展程序。我试过了:

jenkins.refreshExtensions()

......但没有快乐。

如何从groovy脚本网页注册扩展类?

2 个答案:

答案 0 :(得分:0)

你需要做更多的事情来构建一个Jenkins插件

您可以在groovy中构建它们,但它需要位于HPI(专用JAR文件)中 - 您可以通过插件屏幕加载它。你需要gradle,gent和Kiyotaka建造的例子。

https://github.com/kiy0taka/jenkins-plugin.gent

gent --name=<proj> kiy0taka/jenkins-plugin
cd <proj>
./gradlew server

gradlew步骤将运行已加载插件的本地Jenkins服务器

您需要为配置和构建设计步骤构建表单组件  并处理序列化配置数据

答案 1 :(得分:0)

Google Groups post by the same poster中,这可能回答得更好,尽管现在可能已经过时了。提到的问题GROOVY-3361仍然存在,并且似乎限制了Groovy类中注释的处理和扫描方式。

真遗憾,您无法使用Jenkins中的Groovy代码针对扩展点注册事物。

我仍然想知道自定义hudson.ExtensionFinder是否有可能,它本身必须用Java编写。但是我没有时间进行那么深入的研究。