2011-12-21 200 views
2

我使用ArtifactDeployer插件將構建作業構件部署到遠程位置(Windows共享SMB)。然而詹金斯從未成功。投擲的錯誤:Jenkins - 遠程訪問被拒絕

[ArtifactDeployer] - 從動作後開始部署...... [ArtifactDeployer] - [錯誤] - 無法部署。無法創建目錄...生成步驟 [ArtifactDeployer] - 從部署工作區文物遠程目錄改爲建立結果失敗

本地部署工作正常。

Jenkins機器操作系統是Windows 7 32位教授 Jenkins正在使用本地系統帳戶作爲服務運行。

我嘗試使用另一個帳戶,我的用戶帳戶但服務啓動失敗(Windows錯誤1069:由於登錄失敗服務未啓動)。 網絡服務帳戶確實運行,但Jenkins拋出無法訪問.NET框架的錯誤。

當手動嘗試遠程複製,這工作正常。我可以創建目錄並寫入它。當然在同一臺機器上。

我試着在詹金斯兩個不同的遠程參考:)) 1 \\ targetdirectory中 2 I:\ - 通過映射一個驅動器號在Windows 沒有成功遠程目錄...

任何提示或建議?謝謝!

更新15/02/2012: 仍然沒有解決方法或解決此問題的方法。 這不僅是插件,我也使用「執行Windows批處理命令」來解決這個問題。 我發現了一個我想分享的bug report

解決方案

我發現了一個solution。您必須將訪問權限授予域中的計算機,而不是該計算機的用戶。如果你回頭看,似乎很邏輯。

第二種解決方案是使用域用戶帳戶運行服務。以上我通過使用本地用戶.\user而不是DOMAIN\user而犯了一個錯誤。

+0

如果您沒有域控制器,有什麼想法嗎? – 2012-11-02 09:28:34

回答

0

確保您的「本地系統帳戶」有權訪問遠程目錄(包括寫入權限)。然後使用符號

\\targetdirectory 

將驅動器號映射到遠程目錄僅適用於您當前正在使用的用戶帳戶。驅動器號映射將不可用於任何其他帳戶。

+0

如何做到這一點? – 2012-11-02 09:28:13

+0

最好在http://superuser.com/上提出一個單獨的問題。 (並在此處發佈鏈接。) – 2012-11-02 10:41:11

1

如果您沒有域名,則以下內容可以正常使用。即使你有域名,這應該工作。

背景資料:
你需要你的映射驅動器映射爲同一個賬戶,該服務使用,並可以在合適的時間。通常映射的驅動器僅在登錄時映射到登錄用戶。服務用戶上下文本身不會「登錄」 - 例如,如果我將驅動器映射爲MyUser並且服務運行爲MyUser,只有輸入密碼才能登錄,驅動器將不可用。但是,我們可以使用腳本來映射驅動器啓動(而不是登錄)爲特定用戶。詹金斯通常以本地系統帳戶運行,因此如果您不想更改該帳戶,則需要運行以下腳本作爲SYSTEM用戶。如果您不想將此映射驅動器授予所有以SYSTEM運行的服務/進程,並以該用戶身份運行下面的服務和腳本(這是),您可以創建一個特定用戶讓Jenkins運行大概更安全)。

解決步驟:
在ArtifactDeployer要部署到映射的網絡驅動器。在我的情況下,這是S :.

遠程共享上沒有特別的權限設置。 (在我的情況下,Windows Server 2008共享包含一個用於映射驅動器的用戶名和密碼。)

在您選擇的用戶(默認:SYSTEM)有權訪問的地方編寫批處理文件MapDrives.bat其中包括:

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