Gitプラグインを使用してJenkinsでGitプロジェクトを構成しようとしています。プロジェクト構成ページで、Git構成にリポジトリURLを入力します。これはhttps URLです( https://git.mycompany.com/git/MyProject.git )。ただし、プロジェクトをビルドすると、次のエラーが表示されます。
Started by user Hudson Administrator
[EnvInject] - Loading node environment variables.
Building in workspace /home/hudson/.hudson/jobs/MyProject/workspace
Checkout:workspace / /home/hudson/.hudson/jobs/MyProject/workspace - hudson.remoting.LocalChannel@3699cfcc
Using strategy: Default
Cloning the remote Git repository
Cloning repository https://git.mycompany.com/git/MyProject.git
git --version
git version 1.8.2.1
ERROR: Error cloning remote repo 'Origin' : Could not clone https://git.mycompany.com/git/MyProject.git
hudson.plugins.git.GitException: Could not clone https://git.mycompany.com/git/MyProject.git
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.Java:286)
at org.jenkinsci.plugins.gitclient.AbstractGitAPIImpl.clone(AbstractGitAPIImpl.Java:59)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.clone(CliGitAPIImpl.Java:47)
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.Java:1012)
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.Java:948)
at hudson.FilePath.act(FilePath.Java:912)
at hudson.FilePath.act(FilePath.Java:885)
at hudson.plugins.git.GitSCM.determineRevisionToBuild(GitSCM.Java:948)
at hudson.plugins.git.GitSCM.checkout(GitSCM.Java:1114)
at hudson.model.AbstractProject.checkout(AbstractProject.Java:1411)
at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.Java:652)
at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.Java:88)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.Java:557)
at hudson.model.Run.execute(Run.Java:1665)
at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.Java:507)
at hudson.model.ResourceController.execute(ResourceController.Java:88)
at hudson.model.Executor.run(Executor.Java:230)
Caused by: hudson.plugins.git.GitException: Failed to connect to https://git.mycompany.com/git/MyProject.git
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.getURLWithCrendentials(CliGitAPIImpl.Java:1374)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.getURLWithCrendentials(CliGitAPIImpl.Java:1326)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$300(CliGitAPIImpl.Java:47)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.Java:280)
... 16 more
Trying next repository
ERROR: Could not clone repository
Java.io.IOException: Could not clone
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.Java:1025)
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.Java:948)
at hudson.FilePath.act(FilePath.Java:912)
at hudson.FilePath.act(FilePath.Java:885)
at hudson.plugins.git.GitSCM.determineRevisionToBuild(GitSCM.Java:948)
at hudson.plugins.git.GitSCM.checkout(GitSCM.Java:1114)
at hudson.model.AbstractProject.checkout(AbstractProject.Java:1411)
at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.Java:652)
at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.Java:88)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.Java:557)
at hudson.model.Run.execute(Run.Java:1665)
at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.Java:507)
at hudson.model.ResourceController.execute(ResourceController.Java:88)
at hudson.model.Executor.run(Executor.Java:230)
コマンドラインからリポジトリを複製できます。また、git clone
Jenkinsプロジェクトのビルド前のステップのシェルコマンドとして、プラグインの設定が機能しない理由がわかりません。それが認証の問題であると考えて、.netrcファイルで資格情報を指定し、URLにそれらを含めることを試みました(つまり https:// username:[email protected]/git/MyProject。 git )ただし、すべての場合で同じエラーが引き続き発生します。何か案は?
これは Jenkins Gitプラグイン のバグです。
資格情報プラグインを使用して資格情報を作成し、ジョブのSCM/Gitセクションでこれらの資格情報を使用することにより、資格情報の問題を回避できます。ただし、これにより、チェックアウトが失敗した場合、ビルドログにユーザー/パスワードがプレーンテキストで公開されます。
また、gitでHTTPプロキシを使用している場合、これは機能しません。 (今のところ)最良の方法は、JGitを使用することです(Jenkins構成で構成されます)。ただし、JGitは実験的であり、プロキシに関しても非常に制限されています。
(一般的なリクエストにより回答が投稿されました;))
Gitリポジトリに自己署名証明書を使用していて、GitがJenkins Git Clientプラグインではなくコマンドラインから機能する場合、Jenkins Java Keystore(上記の コメントのtijsで説明されているように )。
これは、Git ClientプラグインがJavaのApache HttpClientを使用して直接接続しようとするため(git.exeをバイパス)、通常、接続の作成に使用されるすべてのGit設定が無視されます(GIT_SSL_NO_VERIFY
およびcurl-ca-bundle.crt)
の証明書を含みます。残念ながら、HttpClient throwsSunCertPathBuilderException: unable to find valid certification path to requested target
スタックトレースなしのGitExceptionであるため、表示できるのは'接続に失敗しました'メッセージのみです。
これを修正するには、tijs: http://www.mkyong.com/webservices/jax-ws/suncertpathbuilderexception-unable-to-によって提供されるリンクをたどることができます。有効な認証パスを要求されたターゲットに見つける/
デフォルトのJenkinsインストールを使用している場合、結果のjssecacerts
ファイルをC:\Program Files (x86)\Jenkins\jre\lib\security
にコピーする必要があります。
InstallCert.Java
へのリンクは、元の Andreas Sterbenzの投稿 (web.archive.orgのおかげです)、または codeで少し修正されたバージョンで見つけることができます。 google 。
上記のアプローチがGit Clientプラグインバージョン1.4.6で機能することを確認しました。
Gitクライアントを2.10.0以降にアップグレードします。
以下のコマンドを実行します。
git config --system http.sslVerify false
git config --global http.sslVerify false
私のソリューションはJenkins-Git-Pluginでうまく機能しました。
# create my exec
su root
fuckgit=/usr/bin/fuckgit
touch $fuckgit
echo "#! /usr/bin/env bash" > $fuckgit
echo "git -c sslVerify=false $@" > $fuckgit
システム設定に移動し、git実行可能ファイルを設定= /usr/bin/fuckgit
できた.
TODO:美しいこのans
gitプラグインのメインページ には次のように書かれています:
Gitがクローンできなかったことを示す出力が表示されている場合は、以下の出力のように、Jenkins構成設定(プロジェクト設定ではなくグローバル設定)に移動し、Gitパスを完全修飾パス(たとえば、「git "but"/usr/bin/git "またはGitバイナリがインストールされている場所)。また、ファイルシステムベースのクローンを実行している場合は、権限が正しいことを確認する必要があります。
Started by user anonymous
Checkout:workspace / C:\Documents and Settings\Administrator\.hudson\jobs\watir\workspace - hudson.remoting.LocalChannel@1a1f370
Last Build : #4
Checkout:workspace / C:\Documents and Settings\Administrator\.hudson\jobs\watir\workspace - hudson.remoting.LocalChannel@1a1f370
Cloning the remote Git repository
Cloning repository Origin
$ git clone -o Origin git://github.com/bret/watir.git "C:\Documents and Settings\Administrator\.hudson\jobs\watir\workspace"
Trying next repository
ERROR: Could not clone from a repository
FATAL: Could not clone
hudson.plugins.git.GitException: Could not clone
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.Java:400)
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.Java:358)
at hudson.FilePath.act(FilePath.Java:676)
at hudson.FilePath.act(FilePath.Java:660)
at hudson.plugins.git.GitSCM.checkout(GitSCM.Java:358)
at hudson.model.AbstractProject.checkout(AbstractProject.Java:833)
at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.Java:314)
at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.Java:266)
at hudson.model.Run.run(Run.Java:948)
at hudson.model.Build.run(Build.Java:112)
at hudson.model.ResourceController.execute(ResourceController.Java:93)
at hudson.model.Executor.run(Executor.Java:118)
これもあなたにとって問題になるかもしれません。
同じページでは、デフォルトのプラグインの動作に問題がある場合、JGitでテストすることも推奨されています(-Dorg.jenkinsci.plugins.gitclient.Git.useCLI=false
)。
git credentials in "Credentials"をloginおよびpasswordで登録して、gitリポジトリにアクセスするには- httpsプロトコル(「Manage Jenkins」の下)、credentialIdを生成します(例(dd0d6733-cc2e-4464-bb7d-4b6af86fe40a)これは、ジェンキンスがこの資格情報をパイプラインで使用するのに役立ちます。
Jenkins Pipelineを使用すると、次のことができます。
node{
git url: "https://tfs:8080/tfs/job.git", branch: "feature/migration", credentialsId:'dd0d6733-cc2e-4464-bb7d-4b6af86fe40a'
}
ソースコードをジョブのワークスペースにダウンロードします
証明書の問題を取り除くためにすべてを試しましたが、最終的にはgitプラグインの問題です。プラグインをgit 1.5(2.0.3から)およびgit-client 1.0.7(1.6.3から)にロールバックすると、うまくいきました。資格情報オプションを使用できるようにgit-client 1.4.6を最初に試しましたが、機能しませんでした。したがって、これら2つのプラグインの正しい組み合わせが重要だと思います。このソリューションは JENKINS-205 で言及されました
JenkinsでGitを使用するには、次の2つのプラグインをインストールする必要があります。
最初のプラグイン(Git-Client-plugin)は、git操作(git add、git commit、git Push、git clone、.. etc)を実行するための低レベルAPIです。
2番目のプラグイン(Git-plugin)は、GitをJenkinsジョブのSCMオプションとして追加します。
2番目のプラグインは最初のプラグインの機能に依存しているため、GitがJenkinsで動作するには両方が存在する必要があります。
https://の代わりにgit://を使用すると、gitクライアント1.19.6でjenkins 1.644で動作します
これは修正され、最新のプラグインに関する問題はなくなりました(この1.19.0を書いているので)。 git-plugin-client 1.6.xで発生しました。
私の場合、あるジェンキンスの奴隷は正常に働いたが、別の奴隷はそうではなかった。 Git実行可能ファイルをデフォルトからJGitに変更すると、両方とも機能しました。