2011-12-21 39 views
2

私はArtifactDeployerプラグインを使用してビルドジョブ成果物をリモートロケーション(Windows共有SMB)に展開しています。 しかし、ジェンキンスは成功することは決してありません。以下のように投げるエラー:Jenkins - リモートアクセスが拒否されました

は[ArtifactDeployer] - [ERROR] - - ポストアクション... [ArtifactDeployer]から始まる展開はデプロイできませんでした。 [ArtifactDeployer】ステップ を構築する...ディレクトリを作成できません - リモートディレクトリにワークスペースからアーティファクトを展開するローカル展開が正常に動作しますFAILURE

を結果を構築変更。

ジェンキンスマシンOSはWindows 7 32ビット教授 ローカルシステムアカウントを使用してサービスとして実行されています。

私のユーザーアカウントは別のアカウントを使用しようとしましたが、サービスを開始できませんでした(Windowsエラー1069:ログオンに失敗してサービスが開始されませんでした)。 ネットワークサービスアカウントは実行されましたが、Jenkinsは.NET Frameworkにアクセスできないエラーをスローします。

手動でリモートコピーを試みるとき、これは問題なく動作します。私はディレクトリを作成してそれに書き込むことができます。もちろん同じマシンで。

私はジェンキンス異なる2つのリモート参照しようとした。)2 1)\\たtargetdirectory I:\ - 窓 ノー成功にリモートディレクトリにドライブ文字をマッピングすることにより...

任意のヒントや提案?ありがとう!

更新日15/02/2012: この問題の解決策も回避策もありません。 プラグインだけでなく、 "Execute Windows batch command"を使用してこの問題にもヒットしました。 共有したいバグreportが見つかりました。

ソリューションは、私がsolutionを見つけました。そのマシンのユーザーではなく、ドメイン内のコンピューターにアクセスを許可する必要があります。あなたがそれを振り返ってみると、非常に論理的に見えます。

第2の解決方法は、ドメインユーザーアカウントを使用してサービスを実行することです。上記の私は、ローカルユーザ.\userDOMAIN\userの代わりに使用して間違いを犯しました。

+0

ドメインコントローラをお持ちでない場合は、 –

答えて

0

「ローカルシステムアカウント」にリモートディレクトリへのアクセス権(書き込みアクセス権を含む)があることを確認してください。

\\targetdirectory 

リモートディレクトリへのドライブ文字のマッピングは、現在作業しているユーザーアカウントにのみ適用されます。ドライブレターのマッピングは他のアカウントでは使用できません。

+0

これはどのように行いますか? –

+0

http://superuser.com/のそれについて別個の質問をすることをお勧めします。 (そしてここに質問へのリンクを投稿してください)。 –

1

ドメインをお持ちでない場合は、次のことを確認してください。このはドメインを持っていてもになります。

背景情報:
あなたがマップされたドライブは、サービスが適切なタイミングで使用して利用できるようにしているのと同じアカウントにマップする必要があります。通常マップされたドライブは、ログインしたユーザーのログイン時にのみマップされます。サービスユーザーのコンテキストは、それ自体が「ログイン」しません。たとえば、ドライブをMyUserとしてマップし、 MyUserでは、パスワードを入力して実際にログインするまでドライブを使用できません。ただし、スクリプトを使用して、の起動時に、特定のユーザーに対して(ログインの代わりに)にドライブをマップすることができます。 Jenkinsは通常ローカルシステムアカウントとして実行されるため、変更したくない場合は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

関連する問題