2017-05-10 1 views
0

私はグルーヴィーが大好きです。それは非常に強力なスクリプトであり、我々はどこでもそれを使用します。最近、substコマンドで作成された仮想ドライブにあるファイルを取得しようとしているJenkinsサーバー上で、問題はgroovyが仮想ドライブをサポートしていないようだが、これについて何の確認も見つけられなかったということだ。これは本当ですか、これに対する回避策はありますか?ここでgroovyの仮想(subst)ディスクからファイルをリストするには?

は、我々が使用するサンプルコードです:

import groovy.io.FileType 

def list = [] 
//the original file path for T: is C:\Users\MyUser\workspace\MyProject\src\test\data 
def dir = new File("T:" + "\\") 
dir.eachFile (FileType.FILES) { file -> 
    list << file 
} 

list.each{ 
    println "${it}" 
} 

我々が得た結果である:

[EnvInject] - Groovyのスクリプトの内容を評価する[EnvInject] - [ERROR] - 問題 ラッパーで定義されたenv変数を注入すると発生します。org.jenkinsci.lib.envinject.EnvInjectException:失敗しました スクリプトを評価してください。 java.io.FileNotFoundException:T:システム ログを参照してください。

何か助けていただければ幸いです。

+1

、どうやら「仮想ドライブのマッピング」は、必ずしもすべてのユーザーには表示されません。あなたはその仮想ドライブをどのように設定しましたか?また、Jenkinsが実行しているユーザと権限はどうでしたか? (もしあなたがそれを指定すれば、正しい専門家に洞察力を求めるように促すかもしれません) –

+0

こんにちはHugues Moreau 9.フィードバックのためのThanx。面白いヒントです。私は自分のユーザーと一緒にJenkinsを実行しています。興味深いのは、私は今、SoapUIで同じスクリプトを試してみました。 Groovyは仮想ドライブを処理できますが、Jenkinsの下では処理できません。私はこの部分をさらに調べようとします。 – Gico

+0

Jenkinsはサービスとして動作しますか?それはまた明らかに重要です –

答えて

1

私は自分で答えを見つけましたが、@Hugues Moreau 9の入力は答えにつながるものでした。

許可の問題でした。 Jenkinsは私のデフォルトアカウントで実行されていますが、この問題はApache(httpd.exe)が原因です。 httpd.exeがシステムアカウントとして実行されていて、T:にアクセスできませんでした。私はSUBSTディレクトリTを作成した後

PSEXEC -i -s -d CMD 

:SYSTEMユーザーのために私がやったことは、私がhttps://technet.microsoft.com/en-us/sysinternals/bb897553.aspxからPSEXEC.EXEをダウンロードし、このツールで私は、SYSTEMユーザーとしてコマンドラインを開いています。今、JenkinsとApacheは仮想ドライブにアクセスできます。

としてユーグは、より正確な記述を指摘し、質問はここにある:私は過去にこのようなもので苦労https://stackoverflow.com/questions/182750/map-a-network-drive-to-be-used-by-a-service

関連する問題