2017-07-04 31 views
0

JenkinsをWindows PCで動作させようとしていて、サブモジュールで奇妙な問題が見つかりました。JenkinsとGitのサブモジュールの問題

私は3つのサブモジュールを持つgit repoを持っています。しばらくすると、Git自体がJenkinsで働いているように見えて、通常のクローンが機能します。しかし、クローンはメインリポジトリ内のサブモジュールを複製しないので、サブモジュールを再帰的に更新するためにボックスをチェックしました。しかし

enter image description here

、私は私の仕事を実行します。

Started by user <User> 
Building in workspace X:\Jenkins\<JobName> 
- C:/Program Files/Git/bin/git.exe rev-parse --is-inside-work-tree # timeout=10 
Fetching changes from the remote Git repository 
- C:/Program Files/Git/bin/git.exe config remote.origin.url ssh://[email protected]<server>/<repo>.git # timeout=10 
Fetching upstream changes from ssh://[email protected]<server>/<repo>.git 
- C:/Program Files/Git/bin/git.exe --version # timeout=10 
using GIT_SSH to set credentials 
- C:/Program Files/Git/bin/git.exe fetch --tags --progress ssh://[email protected]<server>/<repo>.git +refs/heads/*:refs/remotes/origin/* 
- C:/Program Files/Git/bin/git.exe rev-parse "refs/remotes/origin/master^{commit}" # timeout=10 
- C:/Program Files/Git/bin/git.exe rev-parse "refs/remotes/origin/origin/master^{commit}" # timeout=10 
Checking out Revision b13204ee1c6717a82d1c7a17922f2a477efd119d (refs/remotes/origin/master) 
Commit message: "testinggg.." 
- C:/Program Files/Git/bin/git.exe config core.sparsecheckout # timeout=10 
- C:/Program Files/Git/bin/git.exe checkout -f b13204ee1c6717a82d1c7a17922f2a477efd119d 
- C:/Program Files/Git/bin/git.exe rev-list b13204ee1c6717a82d1c7a17922f2a477efd119d # timeout=10 
- C:/Program Files/Git/bin/git.exe remote # timeout=10 
- C:/Program Files/Git/bin/git.exe submodule init # timeout=10 
- C:/Program Files/Git/bin/git.exe submodule synC# timeout=10 
- C:/Program Files/Git/bin/git.exe config --get remote.origin.url # timeout=10 
- C:/Program Files/Git/bin/git.exe submodule init # timeout=10 
- C:/Program Files/Git/bin/git.exe config -f .gitmodules --get-regexp ^submodule\.(.*)\.url # timeout=10 
- C:/Program Files/Git/bin/git.exe config --get submodule.top.url # timeout=10 
- C:/Program Files/Git/bin/git.exe remote # timeout=10 
- C:/Program Files/Git/bin/git.exe config --get remote.origin.url # timeout=10 
- C:/Program Files/Git/bin/git.exe config -f .gitmodules --get submodule.top.path # timeout=10 
using GIT_SSH to set credentials 
- C:/Program Files/Git/bin/git.exe submodule update --init --recursive top 
FATAL: Command "C:/Program Files/Git/bin/git.exe submodule update --init --recursive top" returned status code 1: 
stdout: 
stderr: fatal: Needed a single revision 
Unable to find current revision in submodule path 'top' 

hudson.plugins.git.GitException: Command "C:/Program Files/Git/bin/git.exe submodule update --init --recursive top" returned status code 1: 
stdout: 
stderr: fatal: Needed a single revision 
Unable to find current revision in submodule path 'top' 

    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1903) 
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1622) 
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$300(CliGitAPIImpl.java:71) 
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$7.execute(CliGitAPIImpl.java:1076) 
    at hudson.plugins.git.extensions.impl.SubmoduleOption.onCheckoutCompleted(SubmoduleOption.java:102) 
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1182) 
    at hudson.scm.SCM.checkout(SCM.java:495) 
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1276) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:560) 
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:485) 
    at hudson.model.Run.execute(Run.java:1735) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) 
    at hudson.model.ResourceController.execute(ResourceController.java:97) 
    at hudson.model.Executor.run(Executor.java:405) 
Finished: FAILURE 

それが言うとき、Gitはどういう意味:サブモジュールパスに現在のリビジョンを見つけることができません。単一のリビジョンを必要

を「トップ」

私は見ました何も見つかりませんでした:(

通常のシェルでこのコマンドシーケンスを複製しましたが、エラーは表示されませんでした。

ご協力いただければ幸いです。ありがとう!

答えて

0

明らかに、「トップ」はあなたのサブモジュールの1つです。サブモジュールを含むメインのリポジトリは、各サブモジュールのコミットIDを参照として格納するだけです。私はエラーメッセージを、「トップ」には見つからない(存在しない?)メインリポジトリの「トップ」のコミットIDがあるかのように解釈します。私はこれについて確かめるためにこれをチェックするだろう。

我々は Gitのプラグインの 高度なサブモジュールの動作を使用しますが、Builderですべてのgit submodule ...のコマンドを実行していなかった 私はGitのサブモジュールで働いていた最後のプロジェクトで

とジェンキンス:Conditional BuildStep Pluginのシェルステップを実行します。 条件付きこれらのGitコマンドで何か問題が発生した場合、ビルドを中止することができます。

+0

"ID"とは何を意味するのか分かりません。実際、「トップ」は私のサブモジュールの1つが行くパスです。私のgitmodulesファイルは、リポジトリのURL、ブランチとそのパスだけを表示し、コミット情報は含まれていません。それは普通ですか? – viterbi

+0

@viterbi "ID"とは、すべてのコミットに割り当てられている20バイトのハッシュを意味します。はい、[それは正常です](https://www.git-scm.com/docs/gitmodules)しかし、私はそれを言及していませんでした。 [git-submodule](https://www.git-scm.com/docs/git-submodule)を参照してください: "_Submodulesはメインリポジトリ内のいわゆるgitlinkツリーエントリから構成され、その中の特定のコミットオブジェクトを参照しますソースツリーのルートにある.gitmodules(...)ファイル内のレコードは、サブモジュールに論理名を割り当て、サブモジュールがクローン化されるデフォルトのURLを示します._ –

+0

I本当に私が間違っていることを知らない。もし私がサブモジュールを使ってレポを再帰的にクローンしたら、私は何の問題もありません。ジェンキンがそれをするとき、 "必要なシングルリビジョン"というメッセージが現れます...ジェンキンが私に多くを彼にそれをさせることを好む... – viterbi

1

似たような問題が発生している方は、Jenkinsのチェックボックスをオンにしてローカルワークスペースを一掃し、リポジトリクローンを一度強制的に実行してください。それは私のために働いた;)

関連する問題