Вызвать конкретную цель ANT в Jenkins, если она существует - PullRequest
0 голосов
/ 28 июня 2019

Я хотел бы условно вызвать конкретную цель ANT в Jenkins, если эта цель существует в данном файле ANT build.xml. Я попытался использовать условный шаг, используя регулярное выражение для содержимого файла build.xml.

enter image description here

Поэтому я пытаюсь обнаружить присутствие цели ANT publish-all с помощью файла сценария ANT build.xml, и если он существует, вызовите его.

Я использую выражение: ^. * Publish-all. * $

С меткой: $ {FILE, path = "build.xml"}

Однако я получаю следующую ошибку:

2019.06.28 15:49:19 Exception caught evaluating condition: [org.jenkinsci.plugins.tokenmacro.MacroEvaluationException: Unrecognized macro 'basedir' in '<?xml version="1.0" encoding="UTF-8"?>
2019.06.28 15:49:19 <project name="My Project" basedir="." default="publish-local">
2019.06.28 15:49:19     
2019.06.28 15:49:19     <property file="${basedir}/build.properties"/>

Далее следует остальное содержимое файла build.xml, который содержит цель публикации-все.

Кажется, что он пытается проанализировать файл build.xml на предмет наличия токенов и отключается в свойстве ANT $ {basedir} , а не просто обрабатывает его как обычный текст для выполнения шаблона регулярного выражения матч против, как я и ожидал. Есть ли способ заставить это работать или другой метод вообще?

1 Ответ

0 голосов
/ 05 июля 2019

Я перестал пытаться использовать: Соответствие регулярному выражению и просто переключился на Execute Shell . Там я использовал простую команду grep, чтобы проверить, присутствует ли строка: name = "publish-all" в файле ANT build.xml.

#!/bin/bash
grep name=\"publish-all\" build.xml

Условие выполнения оценивается как true, если значение выхода оболочки было равно нулю (что grep возвращает при совпадении). Grep возвращает ненулевое значение, когда оно не совпадает.

Вот как это выглядело в моей конфигурации работы Дженкинса:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...