Проверка плагинов Jenkins с помощью Ruby - PullRequest
8 голосов
/ 23 февраля 2012

Я разрабатываю плагин Jenkins в Ruby.Предполагается, что вы сможете настроить каждый узел, который подключается к серверу, так, чтобы электронное письмо отправлялось на указанный адрес, когда узел теряет свое соединение с мастером.EmailNodeProperty добавляет поле для ввода адреса электронной почты:

# 
# 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

Когда вы конфигурируете узел, есть поле с именем email, в которое вы можете ввести адрес электронной почты.Я хочу, чтобы это поле было проверено при вводе адреса.

При сохранении конфигурации создается EmailNodeProperty, откуда (верно) вы можете получить доступ к адресу электронной почты.

MyComputerListener 'offline вызывается, когда узел теряет соединение:

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 находит адрес электронной почты и отправляет электронное письмо.

Кто-нибудь знает, возможно ли это?проверить форму в Ruby?Согласно Jenkins wiki , это то, что должно быть реализовано (FIELD должен быть заменен на имя поля, поэтому я предполагаю, что это должно быть doCheckEmail):

public FormValidation doCheckFIELD(@QueryParameter String value) {
    if(looksOk(value))
        return FormValidation.ok();
    else
        return FormValidation.error("There's a problem here");
}

Как бы вы сделали это в Ruby?Где метод должен быть реализован?В EmailNodeProperty или MyComputerListener?Как вы справляетесь с QueryParameter?Символ @ сделает его переменной в Ruby.(Что такое Queryparameter?)

Любая помощь будет принята с благодарностью!

/ Jonatan

1 Ответ

1 голос
/ 30 июня 2012

Этого сегодня просто не существует, и нам крайне необходимо добавить его.Это уже несколько раз упоминалось в хакерском сеансе в четверг , так что оно занимает первое место в списке TODO.Но с плагином ruby-runtime 0.10 это просто невозможно.Извините, что подвел вас.

...