2016-06-28 6 views
0

私は裸のリポジトリを持つネットワークフォルダを持っています。Windows Gitのネットワークパスの問題

Jenkinsを使用してプロジェクトをチェックアウトし、GitプラグインとMsBuildプラグインを使用してビルドタスクを作成しようとしています。

ジェンキンスのWindowsサービスは、サービスアカウントとして実行されている

は、サービスアカウントは、ネットワークフォルダへのアクセス権を持っているsvcBuilder

それを呼び出すことができます。私はsvcBuilderとしてビルドサーバーにログインし、Windowsエクスプローラを開き、URI(例:\\ machine \ folder \ repo)を貼り付けて、これを確認しました。リポジトリにアクセスできます。

Jenkinsでは、私はこのパスを// machine/folder/repoに変更しました。

ビルドサーバーにローカルにリポジトリをコピーすると、エラーはありません(リポジトリが機能していると確信しています)。しかし、私は、ネットワーク上で同じリポジトリにアクセスしようとすると、私はエラーを取得:

Failed to connect to repository : Command "C:\Program Files\Git\bin\git.exe -c core.askpass=true ls-remote -h //machine/folder/repo HEAD" 
returned status code 128: 
stdout: 
stderr: fatal: unable to get current working directory: No such file or directory 
fatal: The remote end hung up upon initial contact 

誰が何のgitへと正しい方向に私を指すことがこれを原因としているのですか? gitコマンドはJenkinsプラグインによって生成されるので変更できません。

+0

奇妙な開発:私は問題のフォルダにネットワークドライブをマップするときうまく動作します。 \\ machine \ folder \ repoを使うと、スラッシュがどのように動くかにかかわらず、うまくいかないようです。 – Bitfiddler

+0

Windowsのコマンドラインからgitを使用すると、ドライブのマッピングが正しく動作していないように見えます。 Bashのgitを使用すると、リポジトリがgitリポジトリではないというエラーが表示されます。 – Bitfiddler

答えて

0

これを動作させるために、私はC:\ Program Files(x86)\ SysinternalsSuiteにSysinternals Suiteをダウンロードして抽出しました。その後、Jenkinsのpre-scm-buildstepプラグインをインストールしました。次に、以下のpre-scm-buildStep 'windows batchコマンド'を追加しました。サーバーが再起動されている場合

IF EXIST Y:\NUL GOTO REPOEXISTS 
"C:\Program Files (x86)\SysinternalsSuite\psexec" -s net use Y: \\Machine\folder\repository jenkinsServiceUserPassword /u:DOMAIN\jenkinsServiceUser /persistent:yes 
:REPOEXISTS 

この方法で、私はログオンスクリプトで周りの混乱に持っているか、事前に正しく設定されているドライブに依存しない、スクリプトは単にドライブがあるかどうかをテストし、それをマップそれが欠けている場合。ところで、jenkinsServiceUserはビルドサーバー上のadminです。