JenkinsをWindows PCで動作させようとしていて、サブモジュールで奇妙な問題が見つかりました。JenkinsとGitのサブモジュールの問題
私は3つのサブモジュールを持つgit repoを持っています。しばらくすると、Git自体がJenkinsで働いているように見えて、通常のクローンが機能します。しかし、クローンはメインリポジトリ内のサブモジュールを複製しないので、サブモジュールを再帰的に更新するためにボックスをチェックしました。しかし
、私は私の仕事を実行します。
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はどういう意味:サブモジュールパスに現在のリビジョンを見つけることができません。単一のリビジョンを必要
を「トップ」
私は見ました何も見つかりませんでした:(
通常のシェルでこのコマンドシーケンスを複製しましたが、エラーは表示されませんでした。
ご協力いただければ幸いです。ありがとう!
"ID"とは何を意味するのか分かりません。実際、「トップ」は私のサブモジュールの1つが行くパスです。私のgitmodulesファイルは、リポジトリのURL、ブランチとそのパスだけを表示し、コミット情報は含まれていません。それは普通ですか? – viterbi
@viterbi "ID"とは、すべてのコミットに割り当てられている20バイトのハッシュを意味します。はい、[それは正常です](https://www.git-scm.com/docs/gitmodules)しかし、私はそれを言及していませんでした。 [git-submodule](https://www.git-scm.com/docs/git-submodule)を参照してください: "_Submodulesはメインリポジトリ内のいわゆるgitlinkツリーエントリから構成され、その中の特定のコミットオブジェクトを参照しますソースツリーのルートにある.gitmodules(...)ファイル内のレコードは、サブモジュールに論理名を割り当て、サブモジュールがクローン化されるデフォルトのURLを示します._ –
I本当に私が間違っていることを知らない。もし私がサブモジュールを使ってレポを再帰的にクローンしたら、私は何の問題もありません。ジェンキンがそれをするとき、 "必要なシングルリビジョン"というメッセージが現れます...ジェンキンが私に多くを彼にそれをさせることを好む... – viterbi