Может ли Дженкинс работать с интерактивным Python или Java-программой с графическим интерфейсом или без графического интерфейса?

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

Я попытался запустить пример интерактивного скрипта CLI, используя python, который просто запрашивал имя и распечатывал его потом, но Дженкинс просто ждал целую вечность, а затем зависал. Я вижу, что он запросил ввод, но у пользователя не было возможности ввести данные.

РЕДАКТИРОВАТЬ: В настоящее время работает Jenkins как сервис... Или есть хороший плагин, который кто-нибудь рекомендует, или это так, как я создал скрипт Python?

Предпочтение: я бы предпочел использовать Python, потому что он немного легковесен, но если бы люди имели успех с другими языками, я мог бы составить.

Использование меню с графическим интерфейсом для заполнения данных было бы здорово, потому что я могу использовать опциональные окна, выпадающие меню и делать их необычными, но это не обязательно, CLI значительно лучше, чем наше текущее развертывание.

Кстати, все это работает на ноутбуке с Windows 7 под управлением Python 2.7 и Java 1.7

Извините за эссе! Надеюсь, люди могут помочь мне!

1 ответ

Решение

Извините, но Дженкинс не является интерактивным приложением. Он предназначен для автоматизированного исполнения.

Единственный реальный способ получить входные данные для задания Jenkins (и всего, что выполняется из этого задания) - это параметры задания, которые заполняются до запуска задания. Конечно, графический интерфейс Jenkins для ввода параметров не самый лучший, но он выполняет свою работу. После того, как задание Jenkins собрало параметры задания в начале задания, оно может передать эти параметры всему, что выполняет (Python, shell и т. Д.) В любое время в течение задания. Для этого должно быть две вещи:

  • Вам нужно собрать все входные данные до начала работы
  • Независимо от того, что ваши рабочие вызовы (Python, shell и т. Д.) Должны иметь возможность получать их ввод не в интерактивном режиме, а через командную строку.

Как получить вход в программу

Хорошо спроектированный скрипт должен иметь возможность просто принимать параметры в командной строке:

./goodscript.sh MyName будет самый простой способ сделать это, где значение MyName будет храниться в $1 Первый параметр скрипта. Последующие параметры командной строки будут доступны в переменных $2, $3 и так далее.

./goodscript.sh -name MyName -age 30 будет лучшим способом сделать это, когда скрипт может принимать несколько параметров независимо от их порядка, указав имя параметра перед значением параметра. Вы можете прочитать об использовании getopt для этого метода передачи параметров

Оба примера выше предполагают, что goodscript.sh написан достаточно хорошо, чтобы иметь возможность обрабатывать эти параметры командной строки. Если сценарий явно не обрабатывает параметры командной строки, выполнение вышеописанного будет бесполезным.

Вы можете "передать" некоторые выходные данные в интерактивный скрипт, который не предназначен для явной обработки параметров командной строки:
echo MyName | ./interactivescript.sh передаст значение MyName на первое интерактивное приглашение, которое interactivescript.sh предоставляет пользователю. Проблема в том, что вы можете передать значение только первой интерактивной подсказке.

Дженкинс параметры работы GUI

Как я уже говорил выше, вы можете использовать Jenkins GUI для сбора всевозможных параметров работы (выпадающие списки, флажки, ввод текста). Я предполагаю, что вы знаете, как настроить работу Дженкинса с параметрами. Если нет, в конфигурации задания установите флажок "Эта сборка параметризована". Если вы не можете понять, как это настроить, это другой вопрос, который нужно будет объяснить отдельно.

Однако, как только ваша задача Jenkins собирает все параметры заранее, вы можете ссылаться на них на шаге "execute shell". Если вы используете Windows, вы будете ссылаться на них как %PARAM_NAME%и для Linux как $PARAM_NAME,

Объясните, в чем вам нужна помощь: заставить ваш скрипт принимать параметры командной строки или передать эти параметры командной строки из графического интерфейса задания jenkins, и я расширю этот ответ далее

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