Jenkins - ネットワークドライブにアクセスする

Jenkinsでネットワークドライブにアクセスする際には一定のお作法が必要なようですので、メモ代わりに残しておきます。

 

Jenkinsをwarファイルから起動している際にはログインしているユーザーの権限が付与されているので問題なく動作するようですが、サービスとして動かしているとネットワークドライブにアクセス出来ない場合があります。

これはサービス用の権限でJenkinsが起動されていることが原因のようです。

 

まず、MicrosoftのページよりSysinternals suiteというツールをダウンロードします。

Sysinternals Suite - Windows Sysinternals | Microsoft Docs

 

コマンドプロンプトを管理者権限で起動し、下記のように順番に実行することでネットワークドライブをJenkinsが使用できるようになります。

(下記例ではSysinternals suiteを"c:\sysinternals_suite"へインストールしています)

cd c:\sysinternals_suite

psexec -i -s cmd.exe

net use Z: \\hogehoge\hoge password /u:username /persistent:yes

 

ただ、PCを再起動させてしまうと再設定が必要になってしまうので、ジョブを作るか、バッチをスタートアップ時に実行して上げる必要があります。

 

もしバッチファイル化するのであれば、下記のようになりそうです。

cd c:\sysinternals_suite

psexec -i -s cmd.exe /C "net use Z: \\hogehoge\hoge password /u:username /persistent:yes"

 

参考ページ

Jenkins can't see mapped drive - Stack Overflow