1

Наш процесс развертывания jenkins проверяет наше git-репо в рабочей области, а затем копирует файлы из рабочей области в нашу промежуточную среду с помощью плагина публикации по SSH.

2 дня назад у нас была фиксация и автоматическое развертывание в 10:34 и в 14:13. Коммит AM развернут нормально, так как коммит PM, задание публикации сообщает об этом:

BUILD SUCCESSFUL
Total time: 15 seconds
SSH: Connecting from host [...]
SSH: Connecting with configuration [...] ...
SSH: Disconnecting configuration [...] ...
ERROR: Exception when publishing, exception message [Permission denied]
Build step 'Send files or execute commands over SSH' changed build result to UNSTABLE

Сам коммит был второстепенным, содержащим файлы CSS и Javascript для внешнего интерфейса. Ничего впечатляющего.

Вся промежуточная среда была рекурсивно настроена на chmod 777 и chown'd для пользователя и группы, которые используются конфигурацией развертывания по ssh (временно, чтобы убедиться, что у нас нет проблем с правами доступа к файлам)

Тем не менее задача сообщает, что разрешение отклонено.

Конфигурация для задачи развертывания по ssh не изменилась за последние 2 месяца. Те же ключи, тот же пользователь, те же пароли и т.д.

К сожалению, сообщение об ошибке не содержит никаких полезных деталей.

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

Сервер работает под управлением FreeBSD и размещен у хостера.

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

1 ответ1

1

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

Теперь кто-то внес изменения в эту папку при подготовке (напрямую через SSH) и забыл правильно установить разрешения. Поэтому, когда запустилось задание "опубликовать поверх ssh", оно попыталось скопировать старые артефакты, но у него не было разрешений.

Поскольку папка находится за пределами webroot, который мы выбрали и установили для тестирования 777, мы не смогли его увидеть.

Задание Jenkins было изменено, чтобы очистить рабочее пространство после каждого задания, и разрешения были установлены правильно. Развертывание теперь работает снова.

@ Другое: Пожалуйста, обратите внимание на комментарий к первоначальному вопросу от Iony. Очень полезно докопаться до сути.

Кроме того, на вкладке "Дополнительно" задания "Опубликовать поверх ssh" вы можете выбрать "подробный вывод". Это позволит выводить на консоль выполняемое задание многословно. См. Публикация поверх - Плагины вики на jenkins-ci.org

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .