Sto sviluppando un plug-in Jenkins in Ruby. Dovresti essere in grado di configurare ogni nodo che si connette al server in modo che un messaggio di posta elettronica venga inviato a un indirizzo specificato quando il nodo perde la connessione al master. EmailNodeProperty
aggiunge un campo per inserire un indirizzo email:Convalida dei moduli di plugin Jenkins con 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
Quando si configura un nodo, c'è un campo denominato email
in cui è possibile inserire un indirizzo e-mail. Voglio che questo campo venga convalidato quando inserisci un indirizzo.
Quando si salva la configurazione, viene creato uno EmailNodeProperty
da cui (è vero) è possibile accedere all'indirizzo di posta elettronica.
MyComputerListener
's offline
viene chiamato quando un nodo perde la connessione:
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
trova l'indirizzo email e invia una e-mail.
Qualcuno sa se è possibile convalidare il modulo in Ruby? Secondo il Jenkins wiki, questo è quello che dovrebbe essere attuata (si suppone campo per essere scambiati con il nome del campo, quindi credo che dovrebbe essere doCheckEmail
):
public FormValidation doCheckFIELD(@QueryParameter String value) {
if(looksOk(value))
return FormValidation.ok();
else
return FormValidation.error("There's a problem here");
}
come faresti questo in Ruby? Dove dovrebbe essere implementato il metodo? In EmailNodeProperty
o in MyComputerListener
? Come gestisci QueryParameter? @ Lo renderebbe una variabile di intstance in Ruby. (Che cos'è un Queryparameter?)
Qualsiasi aiuto sarebbe molto apprezzato!
/Jonatan