2012-02-23 4 views
8

Я разрабатываю плагин Jenkins в Ruby. Предполагается, что вы сможете настроить каждый узел, который подключается к серверу, чтобы адрес электронной почты был отправлен на указанный адрес, когда узел потерял соединение с ведущим. EmailNodeProperty добавляет поле для ввода адреса электронной почты:Проверка плагинов Jenkins с 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 

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

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

MyComputerListener «s 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? Значение @ сделало бы это переменной intstance в Ruby. (Что такое Queryparameter?)

Любая помощь будет высоко оценена!

/Йонатан

ответ

1

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

Смежные вопросы