Valider les formes de plugin Jenkins avec Ruby
-
11-11-2019 - |
Question
Je développe un plugin Jenkins dans Ruby. Vous êtes censé pouvoir configurer chaque nœud qui se connecte au serveur afin qu'un e-mail soit envoyé à une adresse spécifiée lorsque le nœud perd sa connexion au maître. EmailNodeProperty
Ajoute un champ pour saisir une adresse e-mail:
#
# 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
Lorsque vous configurez un nœud, il y a un champ nommé email
où vous pouvez saisir une adresse e-mail. Je veux que ce champ soit validé lorsque vous entrez une adresse.
Lorsque vous enregistrez la configuration, un EmailNodeProperty
est créé d'où (c'est vrai), vous pouvez accéder à l'adresse e-mail.
MyComputerListener
's offline
est appelé lorsqu'un nœud perd sa connexion:
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
trouve l'adresse e-mail et envoie un e-mail.
Est-ce que quelqu'un sait s'il est possible de valider le formulaire dans Ruby? Selon le Jenkins Wiki, c'est ce qui est censé être mis en œuvre (le champ est censé être échangé contre le nom du champ, donc je suppose que ça devrait être doCheckEmail
):
public FormValidation doCheckFIELD(@QueryParameter String value) {
if(looksOk(value))
return FormValidation.ok();
else
return FormValidation.error("There's a problem here");
}
Comment feriez-vous cela dans Ruby? Où la méthode doit être mise en œuvre? Dans EmailNodeProperty
ou dans MyComputerListener
? Comment gérez-vous le questionnaire? Le @ en ferait une variable d'instance dans Ruby. (Qu'est-ce qu'un questionnaire de requête?)
Toute aide serait très appréciée!
/ Jonatan
Pas de solution correcte