gpt4 book ai didi

ruby - 使用 Ruby 验证 Jenkins 插件表单

转载 作者:数据小太阳 更新时间:2023-10-29 06:55:07 25 4
gpt4 key购买 nike

我正在用 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

配置节点时,有一个名为email 的字段,您可以在其中输入电子邮件地址。我希望在您输入地址时验证此字段。

当您保存配置时,将创建一个 EmailNodeProperty,您可以从中(没错)访问电子邮件地址。

MyComputerListeneroffline 在节点失去连接时被调用:

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):

public FormValidation doCheckFIELD(@QueryParameter String value) {
if(looksOk(value))
return FormValidation.ok();
else
return FormValidation.error("There's a problem here");
}

你会如何在 Ruby 中做到这一点?该方法应该在哪里实现?在 EmailNodePropertyMyComputerListener 中?你如何处理QueryParameter? @ 将使它成为 Ruby 中的实例变量。 (什么是查询参数?)

如有任何帮助,我们将不胜感激!

/乔纳坦

最佳答案

今天根本不存在,我们急需添加它。这已经在 Thursday morning's hack session 中提到过几次了。 ,因此它在 TODO 列表中名列前茅。但截至 ruby-runtime plugin 0.10 ,这是不可能的。很抱歉让你失望了。

关于ruby - 使用 Ruby 验证 Jenkins 插件表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9410490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com