Zajmuję się tworzeniem wtyczki Jenkins w Ruby. Powinieneś móc skonfigurować każdy węzeł, który łączy się z serwerem, aby wiadomość e-mail była wysyłana pod określony adres, gdy węzeł utraci połączenie z serwerem głównym. EmailNodeProperty
dodaje pole, aby wprowadzić adres e-mail:Sprawdzanie poprawności formularzy wtyczek Jenkins przy użyciu 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
Podczas konfigurowania węzła, jest to pole o nazwie email
gdzie można wprowadzić adres e-mail. Chcę, aby to pole było sprawdzane po wprowadzeniu adresu.
Po zapisaniu konfiguracji EmailNodeProperty
jest tworzony skąd (to prawda) można uzyskać dostęp do adresu e-mail.
MyComputerListener
„s offline
jest wywoływana gdy węzeł utraci połączenie:
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
wyszukuje adres e-mail i wysyła e-mail.
Czy ktoś wie, czy możliwe jest sprawdzenie poprawności formularza w języku Ruby? Według Jenkins wiki, to co miało być realizowane (pole ma być wymieniony na nazwę pola, więc myślę, że powinno być doCheckEmail
):
public FormValidation doCheckFIELD(@QueryParameter String value) {
if(looksOk(value))
return FormValidation.ok();
else
return FormValidation.error("There's a problem here");
}
Jak byś zrobić to w Ruby? Gdzie powinna być wdrożona ta metoda? W EmailNodeProperty
lub w MyComputerListener
? Jak radzisz sobie z QueryParameter? @ Spowoduje, że będzie to zmienna typu intstance w Ruby. (Co jest Queryparameter?)
Każda pomoc będzie bardzo mile widziana!
/Jonatan