svn post-commit Временная ошибка в разрешении имен
Во-первых, я настроил svn для доступа через apache DAV.
Затем у меня есть ловушка после фиксации, которая сообщает серверу непрерывной интеграции jenkins, что хранилище изменилось с помощью простой команды wget (и соберите его):
/opt/local/bin/wget (many-options) https://jenkins.domain.tld/subversion/${UUID}/notifyCommit?rev=$REV >> $LOGFILE
Сценарий проверяет код возврата wget, а затем выводит сообщение об ошибке и завершается с 1 (таким образом, клиент svn знает, что фиксация не удалась).
LOGFILE содержит после сбоя:
--2012-04-04 10:56:54-- https://jenkins.domain.tld/subversion/4d729FFF-FFFF-4fb8-b8b5-be083cf6fe96/notifyCommit?rev=302
Résolution de jenkins.domain.tld (jenkins.domain.tld)... échec: Temporary failure in name resolution.
wget : impossible de résoudre l'adresse de l'hôte «jenkins.domain.tld»
Гостья jenkins.domain.tld
был добавлен в /etc/hosts
чтобы быть уверенным, что разрешение не может потерпеть неудачу, но у меня все еще есть проблема.
Конечно, я проверил команду post-commit из CLI, и она работает.
Я добавил эту строку в скрипт post-commit:
/usr/bin/host jenkins.domain.tld >> $LOGFILE
И разрешение работает просто отлично... может быть, проблема Wget.
Только что заменил wget call на эквивалент curl, та же проблема:
curl: (6) Couldn't resolve host 'jenkins.domain.tld'
2 ответа
Хорошо, не найдено происхождение проблемы, но есть решение (довольно некрасиво):
Обновление: я решил эту проблему, полностью остановив apache, подождав некоторое время, а затем снова запустив его. Но это не объясняет причину такого поведения (и, следовательно, нет удовлетворительного решения). Поэтому я оставляю это открытым.
После обновления до Ubuntu 14.04 LTS у меня возникла та же проблема (не уверен, было ли это обновление действительно связано). Тем не менее, я мог бы решить эту проблему, добавив явную конфигурацию тайм-аута в wget в моей ловушке post-commit:
wget \
--timeout=10 \
--dns-timeout=10 \
...