Дженкинс строит тайм-аут Exec!

Node.js внешний интерфейс Jenkins

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

1. Сообщение об ошибке:

ERROR: Exception when publishing, exception message [Exec timed out or was interrupted after 120,004 ms]

2. Причина ошибки

Справочный блог

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

  • 1, изgitСоответствующая ветка тянет код
  • 2. Установите сторонние зависимости проекта(npm install or cnpm install or yarn install)
  • 3. Тестирование кода проекта или компиляция и создание рабочей среды(npm run build or cnpm run build)
  • 4. Запускаем сервис проекта (тут вообщеnode server)

Шаги 2 и 3 занимают много времени. В основном это связано с тем, что вполне возможно, что время сборки для шага 3 превышаетJenkinsУстановите время сборки (120000 мс), в результате чегоJenkinsВремя сборки истекло и прервано.

Давайте посмотримJenkinsконфигурация по умолчанию

Каждый шаг сборки по умолчанию120000 msпериод тайм-аута. По истечении времени соответствующего шага сборки сборка прервется со следующим сообщением об ошибке.

ERROR: Exception when publishing, exception message [Exec timed out or was interrupted after 120,004 ms]

3. Решения

установить на этапе сборки, который может истечь по тайм-аутуExec timeout(ms)Разумное количество времени, чтобы предотвратить истечение времени ожидания этапов сборки при отметкеExec in ptyПусть консоль своевременно выводит соответствующую информацию журнала.

4. Расширение проблемы

разбор командыcd deploy/merc && ls | grep -v node_modules | xargs rm -r

Первая страница делит команду на разделы

  • 1. cd deploy/merc указывает текущий каталог для deploy/merc
  • 2. ls | grep -v node_modules Найти каталоги или файлы, отличные от node_modules в каталоге
  • 3. LS | GREP -V Node_Modules | XARGS RM -R Найти и удалить каталоги или файлы, кроме Node_Modules в каталоге

Если каталог или файл не могут быть отфильтрованы на втором этапе, операция удаления на третьем этапе не может быть выполнена, поэтому будет сообщено следующее сообщение об ошибке

cd deploy/merc && ls | grep -v node_modules | xargs rm -r
rm: missing operand    //操作对象不存在
Try `rm --help' for more information.

Вторая строка сообщает об ошибке: Объект операции не существует.

Основная цель этой команды — получить последний код с настроенного адреса git до того, как Jenkins соберет проект, чтобы убедиться, что код, развертываемый каждый раз, актуален. Тогда зачем исключать каталог node_modules? node_modules — это сторонний пакет зависимостей проекта. Загрузка файла относительно большая и медленная. Чтобы обеспечить время создания каждого проекта, этот каталог зарезервирован. Эта команда тоже не нужна.Решение проблемы в том, чтобы не выполнять сначала эту команду, потом один раз построить, а потом добавить эту команду.