Постскрипт развертывания городского кода

Я хочу переключить (через "switch.variable") процесс приложения на 3 разных способа на основе результатов, возвращаемых процессом компонента. Компонентный процесс содержит сценарий оболочки (bash), который может возвращать следующие строки:

  • какой-то текст DIFF какой-то текст
  • некоторый текст NO_DIFF некоторый текст
  • любой текст, наиболее вероятное сообщение об ошибке

Затем в том же процессе компонента я хочу обработать повторные результаты сценария bash, используя следующий сценарий:

if (properties.get("exitCode") != 0) {
    properties.put('Status', 'Failure');
    properties.remove("switch.variable")
    commandOut.println("Error")
} else {
    properties.put('Status', 'Success');
    scanner.register("any text", function (lineNumber, line) {
        if (line.contains("DIFF")) {
            properties.put("switch.variable", "DIFF")
        } else if (line.contains("NO_DIFF")) {
            properties.put("switch.variable", "NO_DIFF")
        }
        commandOut.println(properties.get("switch.variable"));
    });
    scanner.scan();
}

Не могли бы вы помочь мне написать правильный пост-сценарий?

0
0
772
1

Ответы 1

Предположим, у вас есть окно сценария оболочки с именем Shell в процессе компонента, которое выглядит так:

echo 'some text: DIFF'

Для этого поля вы должны добавить скрипт пост-обработки, как показано ниже:

if( properties.get("exitCode") != 0 ){
    properties.put('Status', 'Failure');
}
else {
       properties.put('Status', 'Success');
       var regex = "some text";
       scanner.register(regex, function(lineNumber,line){
       var foo = line.substring(line.lastIndexOf(':')+1).trim();
       // The ':' is the symbol after which the payload value starts.
       properties.put("Lorem", foo );
});
scanner.scan();

Затем вы помещаете поле «переключатель» после поля сценария оболочки с именем «Shell». В имени свойства этого переключателя укажите Shell\Lorem.

Отсюда вы можете разветвлять варианты переключателей, рисуя стрелки со значениями, которые вам нужны, например DIFF, NO_DIFF, default. Стрелка по умолчанию будет указывать на непредвиденные случаи. Также у вас может быть другая логика для отказа коробки Shell. Потребуется исходящая стрелка с красным знаком.

Спасибо за ответ, в моем случае, как я могу проверить, содержит ли подстрока результата такие значения, как «DIFF» или «NO_DIFF», чтобы переключить их, подход, поскольку не работает: var foo = line.substring (line.lastIndexOf (': ') + 1) .trim (); если (foo.includes ("DIFF") &&! foo.includes ("NO_DIFF")) {properties.put ("Lorem", foo); } иначе, если (foo.includes ("NO_DIFF")) {properties.put ("Lorem", foo); }

Aleksandr 18.04.2018 13:58

Другие вопросы по теме