Чтение DSL из файла в Jenkins вне рабочей области
Я знаю, что можно запустить файл.dsl из внешнего источника вместо того, чтобы просто писать код потока в описании задания, но каждый раз, когда я пытаюсь запустить, скажем:
/home/flows/flow_script.dsl
Я получаю следующую ошибку:
java.io.FileNotFoundException:/home/flows/flow_script.dsl (No such file or directory)
Путь правильный, я вижу файл через этот путь из оболочки, но он не позволяет мне выбирать что-либо вне "рабочей области сборки".
1 ответ
Я недавно столкнулся с этой самой проблемой: мой сценарий DSL находился вне моей рабочей области (установлен через пакет). Проблема заключается в том, что путь сценариев DSL является форматом Ant, который допускает только определенные шаблоны (но не абсолютные пути).
Мой обходной путь хакерский, но он сработал: добавьте шаг Execute Shell перед шагом "Process Job DSLs", который символически связывает внешний каталог с рабочей областью.
Что-то вроде этого:
echo "Creating a symlink from /home/flows to workspace"
ln -sf "/home/flows" .flows
Затем вы можете установить путь сценариев DSL к ".flows / flow_script.dsl".
Конечно, у этого есть некоторые дополнительные предостережения: каталог, из которого вы создаете символическую ссылку, должен быть доступен пользователю jenkins. И это, вероятно, нарушает множество лучших практик.