Jon*_*edt 8 ruby validation jruby jenkins jenkins-plugins
我正在使用Ruby开发一个Jenkins插件.您应该能够配置连接到服务器的每个节点,以便在节点失去与主服务器的连接时将电子邮件发送到指定的地址.EmailNodeProperty添加一个字段以输入电子邮件地址:
#
# Save an email property for every node
#
class EmailNodeProperty < Jenkins::Slaves::NodeProperty
require 'java'
import 'hudson.util.FormValidation'
display_name "Email notification"
attr_accessor :email
def initialize(attrs = {})
@email = attrs['email']
end
def doCheckEmail value
puts " ENP.doCheckEmail:#{value}"
end
end
Run Code Online (Sandbox Code Playgroud)
配置节点时,会有一个名称email,您可以在其中输入电子邮件地址.我希望在您输入地址时验证此字段.
保存配置时,EmailNodeProperty会创建一个(可以访问)电子邮件地址.
MyComputerListener的offline当一个节点的连接丢失,被称为:
class MyComputerListener
include Jenkins::Slaves::ComputerListener
include Jenkins::Plugin::Proxy
def online(computer, listener)
end
def offline(computer)
#Do nothing when the Master shuts down
if computer.to_s.match('Master') == nil
list = computer.native.getNode().getNodeProperties()
proxy = list.find {"EmailNodeProperty"}
if proxy.is_a?(Jenkins::Plugin::Proxy)
rubyObject = proxy.getTarget()
email = rubyObject.email #<= Accesses the email from EmailNodeProperty
[...]
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
MyComputerListener 找到电子邮件地址并发送电子邮件.
有人知道是否有可能在Ruby中验证表单?根据Jenkins wiki的说法,这是应该实现的(FIELD应该被替换为字段名称,所以我想它应该是doCheckEmail):
public FormValidation doCheckFIELD(@QueryParameter String value) {
if(looksOk(value))
return FormValidation.ok();
else
return FormValidation.error("There's a problem here");
}
Run Code Online (Sandbox Code Playgroud)
你会如何在Ruby中做到这一点?该方法应该在哪里实施?在EmailNodeProperty或在MyComputerListener?你如何处理QueryParameter?@会使它成为Ruby中的一个intstance变量.(什么是Queryparameter?)
任何帮助将非常感激!
/了Jonatan
今天这个根本不存在,我们迫切需要添加它。这个问题在周四上午的黑客会议上已经被提到过几次,所以它在 TODO 列表中名列前茅。但从ruby-runtime 插件 0.10开始,这是不可能的。抱歉让你失望了。