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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top