Domanda

Sto sviluppando un plugin Jenkins in Ruby. Dovresti essere in grado di configurare ogni nodo che si collega al server in modo che un'e -mail venga inviata a un indirizzo specificato quando il nodo perde la sua connessione al master. EmailNodeProperty Aggiunge un campo per inserire un indirizzo email:

# 
# 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 chiamato email dove è possibile inserire un indirizzo email. Voglio che questo campo venga convalidato quando si inserisce un indirizzo.

Quando si salva la configurazione, un EmailNodeProperty viene creato da dove (è giusto) puoi accedere all'indirizzo e -mail.

MyComputerListener'S offline viene chiamato quando un nodo perde la sua 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 e -mail e invia un'e -mail.

Qualcuno sa se è possibile convalidare il modulo in Ruby? Secondo il Jenkins Wiki, questo è ciò che dovrebbe essere implementato (il campo dovrebbe essere scambiato con il nome del campo, quindi immagino 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 lo faresti a Ruby? Dove dovrebbe essere implementato il metodo? In EmailNodeProperty o in MyComputerListener? Come gestisci il queryParameter? @ Lo renderebbe una variabile intstance in Ruby. (Cos'è un queryparameter?)

Qualsiasi aiuto sarebbe molto apprezzato!

/Jonatan

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top