Уведомление Hudson / Jenkins только о последовательных сбоях - PullRequest
4 голосов
/ 23 июня 2011

Я использую Jenkins для запуска тестов Selenium в режиме мониторинга.Сбои часто являются временным явлением (таймауты и т. Д.).Я эскалирую выполнение проектов в случае сбоя с помощью плагина Naginator, и следующая сборка обычно проходит.

Таким образом, я ищу возможность использовать счетчик отказов, который позволил бы отправлять уведомление только в случае неудачного выполнения теста n раз подряд.,Ты хоть представляешь, как можно это сделать?

Ответы [ 4 ]

5 голосов
/ 19 июля 2011

Даниэль, я думаю, тебе лучше всего написать это самому. У меня была похожая проблема , и я сам предложил решение из трех строк без какого-либо опыта работы с Java / Groovy.

Прежде всего, вам нужен способ определить, что сборка не удалась. Смотрите мою проблему для решения.

Во-вторых, вам нужно где-то хранить количество неудачных сборок. Файл в рабочей области проекта является очевидным местом. Используйте этот фрагмент в качестве базы:

def f = new File(manager.build.getWorkspace().getRemote() + '/GroovyFailedBuildsCount.txt')
f.createNewFile()
f.write(text)

И в-третьих, вам нужно отправить электронное письмо. Вдобавок ко всему, вы можете пометить первые неудачные сборки как нестабильные, а когда предел будет достигнут, пометить сборку как неудачную и иметь плагин email-ext для отправки уведомлений по электронной почте только о неудачных сборках.

Руководство по началу работы с Groovy мне очень помогло.

1 голос
/ 24 августа 2017

Уведомление Jenkins только о последовательных нестабильных версиях

С Jenkins v. 2.65 и Groovy Postbuild v. 2.3.1

  1. настроить плагин для уведомлений Jenkins (mail / slack и т. Д.) На отправку сообщений, только если сборка не удалась.

  2. Добавить этот код Groovy в качестве действия пост-сборки задания

    // debugging:
    // manager.build.@result = hudson.model.Result.SUCCESS;
    
    final int threshold = 2;
    
    String jobName = manager.build.project.name;
    def f = new File('/tmp/' + jobName + '_GroovyUnstableBuildsCount.txt');
    
    // debugging:
    // manager.createSummary("info.gif").appendText('path: ' + f.toString(), false, false, false, "red")
    
    if(!f.exists()){ // file don't exists
        f.createNewFile();
    }
    
    // debugging:
    // String fileContent = f.text;
    // manager.createSummary("info.gif").appendText('fileContent: ' + fileContent, false, false, false, "red")
    
    
    if (manager.build.result.isBetterOrEqualTo(hudson.model.Result.SUCCESS)) {
        f.write("0");
    
    } else if (manager.build.result == hudson.model.Result.UNSTABLE) {
    
            int oldValue = 0;
            if(f.text != null && !f.text.empty && f.text != ''){
              oldValue = f.text.toInteger();
            }
        int newValue = oldValue + 1;
    
        if(newValue > threshold){ // trigger send message
            // set build to fail
            manager.build.setResult(hudson.model.Result.FAILURE);
            f.write("0"); // reset counter
    
        } else { // increase count
    
            f.write(newValue.toString());
        }
    }
    
1 голос
/ 09 декабря 2016

Альтернативная реализация:

  1. Используйте плагин Disable Job , чтобы отключить отслеживаемое задание после определенного количества сбоев.
  2. Создать задание мониторинга, которое проверяет, отключено ли отслеживаемое задание. Если задание отключено, прервите сборку мониторинга и отправьте электронное письмо.
  3. (Опционально) Отключите задание мониторинга, чтобы оно не отправляло вам электронные письма.

Это имеет счастливый побочный эффект , также , уведомляющий вас, если кто-то вручную отключит вашу работу.

Чтобы получить список отключенных заданий, заголовок которых содержит «фильтр заголовка»:

curl -sS http://jenkins.example.com/api/json \
  | jq '.jobs[] | select(.name | contains("title filter")) | select(.color=="disabled") | .name'
0 голосов
/ 04 апреля 2012

Плагин email-ext позволяет отправлять электронные письма, когда статус сборки «Сбой» для двух или более сборок. К сожалению, он будет писать вам каждый раз после этого. Отличный сценарий все еще может быть thew

...