Дженкинс - удаленный доступ запрещен - PullRequest
2 голосов
/ 21 декабря 2011

Я использую плагин ArtifactDeployer для развертывания артефактов задания сборки в удаленном месте (общий ресурс Windows SMB).Однако Дженкинс никогда не удается добиться успеха.Выдает ошибки, такие как:

[ArtifactDeployer] - запуск развертывания с последующего действия ... [ArtifactDeployer] - [ERROR] - не удалось развернуть.Невозможно создать каталог ... Шаг сборки [ArtifactDeployer] - Развертывание артефактов из рабочей области в удаленных каталогах с измененным результатом сборки на FAILURE

Локальное развертывание работает нормально.

JenkinsОС компьютера - Windows 7 32-разрядная версия. Профессор Дженкинс работает как служба, используя локальную системную учетную запись.

Я попытался использовать другую учетную запись, мою учетную запись пользователя, но служба не запустилась (ошибка Windows 1069: службане запускался из-за ошибки входа в систему).Учетная запись сетевой службы работала, но Дженкинс выдает ошибки, она не может получить доступ к .NET Framework.

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

Я попробовал две разные удаленные ссылки в Jenkins: 1) \\ targettdirectory 2) I: \ - путем сопоставления буквы диска с удаленной директорией в windows Не удалось ...

Есть советы или предложения?Спасибо!

Обновление 15/02/2012: по-прежнему нет решения или обходного пути для этой проблемы.Это не только плагин, я также затронул эту проблему с помощью «Выполнить пакетную команду Windows»Я обнаружил ошибку отчет , которой хочу поделиться.

Решение

Я нашел решение .Вы должны предоставить разрешение на доступ компьютеру в домене, а не пользователю этого компьютера.Кажется очень логичным, если вы оглянетесь назад.

Вторым решением является запуск службы с использованием учетной записи пользователя домена.Выше я допустил ошибку, используя локального пользователя .\user вместо DOMAIN\user.

Ответы [ 2 ]

1 голос
/ 03 ноября 2012

Если у вас нет домена, следующее наверняка сработает.Это должно работать, даже если у вас есть домен.

Справочная информация: Вам необходимо, чтобы ваш подключенный диск был сопоставлен с той же учетной записью, которую использует служба, и будет доступен в нужное время.Нормально сопоставленные диски отображаются только для вошедшего в систему пользователя во время входа в систему. Контексты пользователей службы не «входят в систему» ​​как таковые - например, если я сопоставляю диск как MyUser, а служба работает какMyUser, диск не будет доступен, пока я не войду в систему, введя свой пароль.Однако мы можем использовать скрипт для сопоставления диска при запуске (вместо входа в систему) для конкретного пользователя.Обычно Jenkins работает как локальная системная учетная запись, поэтому, если вы не хотите это менять, вам нужно будет запустить приведенный ниже сценарий как пользователь SYSTEM.Вместо этого вы можете создать конкретного пользователя для запуска Jenkins от имени, если вы не хотите предоставлять этот сопоставленный диск всем службам / процессам, которые запускаются как SYSTEM, и запускать как службу, так и сценарий ниже под этим пользователем (это вероятно более безопасный).

Шаги решения: В ArtifactDeployer вы хотите развернуть на подключенный сетевой диск.В моем случае это S:.

Специальных настроек разрешений для удаленного общего ресурса нет.(В моем случае общий ресурс Windows Server 2008 с именем пользователя и паролем, который используется для сопоставления диска.)

Запись пакетного файла MapDrives.bat в месте, выбранном пользователем (по умолчанию: SYSTEM) имеет доступ к следующему:

net use S: "\\server_name\share_name" /persistent:yes password_here /USER:username_here

Обратите внимание, что я сопоставляю S: в этой строке.

С помощью планировщика заданий создайте задачу, которая выполняется так жеПользователь в качестве службы (по умолчанию: SYSTEM), запускает At Startup и, в качестве действия, запускает пакетный файл MapDrives.bat.

Перезагрузка, и она должна работать!


Цитирование: Пролистав много страниц и множество тестов, в конечном счете, лучшие предложения были найдены здесь и привели меня к вышеуказанному решению.https://stackoverflow.com/a/4763324/150794

0 голосов
/ 05 января 2012

Убедитесь, что ваша «локальная системная учетная запись» имеет права доступа к удаленному каталогу (включая доступ для записи).Затем используйте обозначение

\\targetdirectory

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

...