properties.put("Status","Success");
Сценарий заключительной обработки может проверять выходной протокол шага и выполнять команды на основе результата. В следующем фрагменте кода scanner.register() регистрирует строки ошибка в строке и значение равно с помощью механизма регулярных выражений, а затем выполняет команды, если эти строки найдены. После того как все строки зарегистрированы, вызывается scanner.scan() для каждой строки выходного протокола шага.
properties.put("Status", "Success");
//
// Оценим встроенное свойство exitCode, содержащее код завершения
// сценария, вызванного шагом модуля. Как правило, если значение
// свойства exitCode отлично от нуля, шаг модуля не выполнен.
//
if (properties.get("exitCode") != 0) {
properties.put("Status", "Failure");
}
else {
//
// Зарегистрируем сканер для поиска текста "ошибка в строке" в протоколе.
// Первый аргумент - регулярное выражение.
//
// Второй аргумент (подставляемая функция) вызывается для каждой строки
// в выводе протокола, которая совпадает с шаблоном. Переменная "lineNumber"
// содержит номер строки, в которой найдено совпадение, а переменная
// "line" - полный текст строки.
//
scanner.register("(?i)ошибка в строке", function(lineNumber, line) {
//
// В данном случае мы создаем свойство "Error", которое
// содержит текст всех найденных ошибок. Мы находим каждую строку,
// начинающуюся со слов "ошибка в строке", и добавляем ее в список.
//
var errors = properties.get("Error");
if (errors == null) {
errors = new java.util.ArrayList();
}
errors.add(line);
//
// Если строка, начинающаяся со слов "ошибка в строке", найдена,
// шаг не выполнен, поэтому в специальном свойстве "Status" задается значение
// "Failure", указывающее серверу UrbanCode Deploy, что шаг должен
// быть помечен как сбойный.
//
properties.put("Status", "Failure");
});
//
// Со сканером можно зарегистрировать несколько поисковых запросов. Добавим
// второй запрос для поиска какого-нибудь содержательного текста,
// который задается как выходное свойство.
//
// Например, если существует строка "Значение равно BLUE", то получим
// выходное свойство "Value" со значением "BLUE".
//
scanner.register("Значение равно", function(lineNumber, line) {
var value = line.replace("Значение равно ", "");
properties.put("Value", value);
});
scanner.scan();
//
// Преобразуем полученный список ошибочных строк в одну строку
// и зададим его как выходное свойство.
//
var errors = properties.get("Error");
if (errors == null) {
errors = new java.util.ArrayList();
}
properties.put("Error", errors.toString());
}
if (properties.get("exitCode")==0)
{ properties.put("Status","Success"); }
else
{ properties.put("Status","Failure"); }
properties.put("Step1Prop","value1");
echo Properties of previous step:
echo "${p:Step1/Status}"
echo "${p:Step1/Step1Prop}"
Второй шаг может также использовать эти
свойства в своем сценарии заключительной обработки. Например следующий сценарий
заключительной обработки включает свойство Status
предыдущего шага в свойство для второго шага:{
properties.put("Step2Prop","New property");
properties.put("Status","OK");
properties.put("StatusOfPreviousStep","${p:Step1/Status}");
}