我正在用Ruby开发Jenkins插件。您应该能够配置连接到服务器的每个节点,以便当该节点失去与主服务器的连接时将电子邮件发送到指定的地址。EmailNodeProperty添加一个字段以输入电子邮件地址:
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
配置节点时,会有一个名为的字段email,您可以在其中输入电子邮件地址。我希望在输入地址时验证此字段。
email
保存配置后,EmailNodeProperty便会创建一个地址(正确),您可以访问该电子邮件地址。
MyComputerListener的offline当一个节点的连接丢失,被称为:
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
MyComputerListener 查找电子邮件地址并发送电子邮件。
有人知道是否可以在Ruby中验证表单吗?根据Jenkins Wiki,这是应该实现的(FIELD应该交换为字段名,所以我想应该是doCheckEmail):
doCheckEmail
public FormValidation doCheckFIELD(@QueryParameter String value) { if(looksOk(value)) return FormValidation.ok(); else return FormValidation.error("There's a problem here"); }
您将如何在Ruby中执行此操作?该方法应在哪里实施?在EmailNodeProperty还是在MyComputerListener?您如何处理QueryParameter?@将使它成为Ruby中的实例变量。(什么是Queryparameter?)
任何帮助将非常感激!
/乔纳坦
该功能今天根本不存在,我们非常需要添加它。在星期四上午的hack会话中已经提出了几次,因此它在TODO列表中排名很高。但是从ruby- runtime插件0.10开始,这是不可能的。抱歉让您失望。