Чтение 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. И это, вероятно, нарушает множество лучших практик.

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