Ошибка публикации веб-сайта Azure Kudu из-за тайм-аута

У меня есть собственный сценарий развертывания (скрипт *.sh), определенный для моего развертывания в Azure.

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

Command 'starter.cmd deploy_pvl_cont ...' was aborted due to no output nor CPU activity for 180 seconds. You can increase the SCM_COMMAND_IDLE_TIMEOUT app setting (or WEBJOBS_IDLE_TIMEOUT if this is a WebJob) if needed.\r\nstarter.cmd deploy_pvl_content.sh

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

  • Увеличьте SCM_COMMAND_IDLE_TIMEOUT до 300
  • Запустите скрипт локально (работает)
  • Настройте новый новый слот развертывания и попробуйте опубликовать ту же фиксацию (та же ошибка)
  • Попытался опубликовать ранее успешный коммит (та же ошибка)
  • Поищите полезные сообщения об ошибках в дампе журнала диагностики (более полезного ничего не нашел)
  • Попытался запустить сценарий развертывания из консоли Kudu (результаты не возвращаются, как будто он на самом деле не запускался)
  • Попытался вернуть git к предыдущей версии, как предложил @david-ebbo.
  • Попытался упростить мой скрипт до одной эхо-команды с теми же результатами.

Не уверен, что я могу сделать, чтобы отладить это дальше. В идеале я хотел бы получить вывод сценария оболочки на лазурном хосте, но не знаю, как его получить. Любые идеи?


person Sudsy    schedule 10.06.2016    source источник
comment
Сколько времени занимает выполнение этого скрипта на локальной машине   -  person Brij Raj Singh - MSFT    schedule 10.06.2016
comment
На моей локальной машине это занимает около минуты. Предыдущие публикации в Azure занимали 180 секунд. Примечание. Я только что отредактировал свой вопрос, чтобы показать, что я пытался увеличить SCM_COMMAND_IDLE_TIMEOUT, и, хотя он ждал дольше, он потерпел неудачу с тем же сообщением.   -  person Sudsy    schedule 10.06.2016
comment
Если вы сможете найти конкретную команду, которая вызывает это, и воспроизвести ее непосредственно из консоли Kudu вне вашего скрипта, это будет хорошим шагом для изоляции проблемы (например, см. здесь). Ваш скрипт пакетный или bash?   -  person David Ebbo    schedule 10.06.2016
comment
Пока оно зависло, вы также можете посмотреть в обозревателе процессов Kudu, который может указать, в каком процессе оно застряло. Кроме того, вы можете поделиться именем своего веб-приложения либо напрямую, либо косвенно? Это может помочь нам в расследовании. Спасибо!   -  person David Ebbo    schedule 10.06.2016
comment
Привет, Дэвид, это stage.pvlighthouse.com.au. Я рассмотрю другие предложения в ближайшее время.   -  person Sudsy    schedule 10.06.2016
comment
@Sudsy Я отправил ответ. Это вполне может быть не то, с чем вы сталкиваетесь, но, учитывая, что у вас есть скрипт bash, я чувствую, что это, вероятно, связано.   -  person David Ebbo    schedule 10.06.2016


Ответы (1)


Обновленный ответ

Это регресс, вызванный переходом на git 2.8.x в Azure. Проблема отслеживается по адресу https://github.com/projectkudu/kudu/issues/2041.

Вот очень простой обходной путь (и вам не нужно использовать старые инструменты git): вместо того, чтобы устанавливать для COMMAND значение deploy_pvl_content.sh, установите для него значение bash deploy_pvl_content.sh.

Мы решим эту проблему, но этот обходной путь поможет вам в работе.

Оригинальный ответ (только оставив контекст)

Возможно, вы столкнулись с какой-то разновидностью эта проблема, вызванная обновлением до git 2.8.1, которое мы только что сделали.

Пока мы пытаемся разобраться в этом, попробуйте этот обходной путь, чтобы увидеть, поможет ли это:

  • Перейти в консоль Куду
  • Создайте папку d:\home\bin
  • Скопируйте туда старую папку Windows git 1.8.x. Вы можете получить содержимое здесь. Если вы перетащите zip-архив в консоль Kudu, появится специальная область распаковки, которая расширит его.
  • Повторите попытку развертывания
person David Ebbo    schedule 10.06.2016
comment
К сожалению, это не решило проблему. - person Sudsy; 10.06.2016
comment
Глядя на проводник процессов, процесс, который зависает без выхода, — это git-bash.exe с подпроцессом mintty.exe . В zip-архиве, который вы просили установить, был git.exe, но не git-bash.exe, не уверен, что это связано. - person Sudsy; 10.06.2016
comment
Удалось проработать несколько вещей. git pull прекрасно работает на консоли kudu и показывает, что репозиторий обновлен. Я также смог запустить команду развертывания с помощью bash .\deploy_pvl_content.sh, и все шаги выполнялись правильно вплоть до самого конца при запуске kudusync. Получается эта ошибка: Error: Could not find a part of the path 'D:\home\site\artifacts\manifest'. Я могу подтвердить, что путь к артефактам не отображается в консоли kudu. - person Sudsy; 11.06.2016
comment
Только что попытался создать папку артефактов, но, к сожалению, это не решило проблему. Казалось, что часть проблемы устранена, но возникло другое исключение, которое было трудно понять. - person Sudsy; 11.06.2016
comment
Сценарий развертывания ведет себя по-другому, когда запускается сам по себе, потому что env не полностью настроен, поэтому он пытается создать папку манифеста (подробности см. в сценарии). Что вы хотите сделать, так это найти отдельную команду из сценария, которая вызывает проблему, а не запускать весь сценарий. - person David Ebbo; 11.06.2016
comment
Если я переключусь на файл bat для развертывания, сможет ли он предоставить лучший журнал ошибок в консоли Azure, чем позволяет сценарий оболочки? Другими словами, вместо того, чтобы просто отображать время ожидания при сбое, более вероятно, что он выдаст полный журнал. - person Sudsy; 11.06.2016
comment
Не уверен, что это будет иметь значение. В любом случае я ожидаю, что любая эхо-строка из сценария попадет в журнал. Но если он застрял в определенной команде, то, вероятно, в это время вообще не будет вывода. Обратите внимание, что git не нужен в zip-архиве, которым я поделился, и вы можете его удалить. - person David Ebbo; 11.06.2016
comment
Итак, я упростил свой сценарий развертывания до: echo "Hello" И я получил тот же тайм-аут. Я попытался с файлами, которые вы мне прислали, в каталоге /home/bin, и я получил тот же результат. - person Sudsy; 11.06.2016
comment
Теперь я могу воспроизвести. Проблема открыта: github.com/projectkudu/kudu/issues/2041 - person David Ebbo; 11.06.2016