私はMSbuildの後にjenkinsでこのコマンドを実行しようとしています
xcopy "C:\Program Files (x86)\Jenkins\workspace\trunk\Projects\results\results\obj\Debug\Package\PackageTmp" "Y:\Extraction_Zone\Jenkins\" /E
Y:マップされたネットワークドライブです。これはcmd.exeで正常に実行されますが、ジェンキンスで実行しようとすると、エラーInvalid drive specification
。
Jenkinsからの出力は次のとおりです。
Time Elapsed 00:00:04.03
[trunk] $ cmd /c call C:\Windows\TEMP\hudson3389873107474371072.bat
C:\Program Files (x86)\Jenkins\workspace\trunk>xcopy "C:\Program Files (x86)\Jenkins\workspace\trunk\Projects\results\results\obj\Debug\Package\PackageTmp" "Y:\Extraction_Zone\Jenkins\" /E
Invalid drive specification
0 File(s) copied
C:\Program Files (x86)\Jenkins\workspace\trunk>exit 4
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE
任意の助けをいただければ幸いです。
私も同じような問題が一度ありました。 services.msc
のすぐ下にJenkinsサービス「このアカウントとしてログオン」を許可し、そこに入力するアカウントがcmd.exe
の実行に使用するものと同じであることを確認してください。
Java JARファイルに基づいたこれらのコマンドは私のために働いた:
cmd
Net Use x:\\
xcopy "dist \" x:\/Y
以上です!この問題を理解するのに多くの時間を費やしましたが、CMDとNet Useを書くまでは何も機能しませんでした!
jenkinsサービスの権限を変更したり、runasコマンドを使用したりする必要はありませんでした。
しかし、私は誰もがネットワークドライブへの読み取りおよび書き込みアクセスを持っていたことに言及する必要があります。
ほとんどのものを簡単に修正できます。
:)
バッチファイルを実行しているWindowsタスクで同じ問題が発生しました(まったく同じではないことを知っています)。そこで、ネットワーク上の場所、つまり共有ドライブにファイルをコピーしようとしました。 UNCパスとマップされたドライブも使用しましたが、エラーは同じでした。私にとっては、エラー番号4-MS DOSエラーコードでした。解決策はNet Useコマンドを使用することでした!それが役立つことを願っています。
同様の問題に直面し、解決する2つの方法を見つけました。
タイプ1:マップされたドライブについてジェンキンスに伝えます。 1.Goto-> Jenkinsの管理->スクリプトコンソール(Groovyスクリプト)。 2.以下のコマンドを実行
def mapdrive = "Net Use Y: \\\\copy_nework_address"
mapdrive.execute();
println "Net Use".execute().getText()
タイプ:2 1.Goto-> cmd-> "Net Use"を実行してネットワークアドレスを知る
xcopy "C:\Program Files (x86)\Jenkins\workspace\trunk\Projects\results\results\obj\Debug\Package\PackageTmp" "Copy_Network_Address\Extraction_Zone\Jenkins\" /E
結論:-再起動するたびにGroovy Scriptを実行する必要があるため、2番目のタイプを好みます。
Adarshrの解決策(つまり、サービスのログオン資格情報を変更する)は、問題の一部で機能しました。私の場合、これによりMercurialリポジトリを(sshプロトコルを使用して)正常にチェックアウトできました。 「ローカルシステムアカウント」を使用する場合は実行しないでください。
ただし、コマンドラインスクリプトを実行するか、ビルドセクションのjenkins 'execute Shell'スクリプトから同じスクリプトを実行するかでは、動作が異なります。私の場合、Python拡張機能をコンパイルします。Jenkinsでは、拡張機能をインポートできません(エラーは表示されませんが、実行が停止するだけなので、クラッシュする可能性があります)。
サービスをアンインストールし、スレーブエージェントをJava Web Startとして実行すると、同じ動作が発生します。これは一時的な修正ですが、Windowsビルドを再起動するとマシン、Java Web Startアプリケーションを手動で再起動する必要があります。
したがって、少なくとも私の場合は、これが資格情報の問題であることは明らかです。
資格情報の使用に関するドキュメント: https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI
CIFSプラグイン の問題を解決しました。