Я разрабатываю плагин Jenkins в Ruby. Предполагается, что вы сможете настроить каждый узел, который подключается к серверу, чтобы адрес электронной почты был отправлен на указанный адрес, когда узел потерял соединение с ведущим. EmailNodeProperty
добавляет поле для ввода адреса электронной почты:Проверка плагинов Jenkins с Ruby
#
# 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
(справа), вы можете получить доступ к адресу электронной почты.
MyComputerListener
«s 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
):
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? Значение @ сделало бы это переменной intstance в Ruby. (Что такое Queryparameter?)
Любая помощь будет высоко оценена!
/Йонатан