15

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)

Jenkins プロジェクトのビルド前の手順でシェル コマンドとして実行するだけでなく、コマンド ラインからリポジトリのクローンを作成できるgit cloneため、プラグインの構成が機能しない理由がわかりません。認証の問題である可能性があると考えて、.netrcファイルに資格情報を指定し、それらをURLに含めてみました(つまり、https://username:password@git.mycompany.com/git/MyProject.git)ただし、すべてのケースで、まだ同じエラーが発生します。何か案は?

4

11 に答える 11

16

これはJenkins Git Pluginのバグです。

資格情報プラグインを使用して資格情報を作成し、ジョブの SCM/Git セクションでこれらの資格情報を使用することで、資格情報の問題を回避できます。ただし、これにより、チェックアウトが失敗した場合に、ビルド ログにプレーンテキストでユーザー/パスワードが公開されます。

また、git で HTTP プロキシを使用している場合、これは機能しません。(今のところ) 最善の方法は、JGit を使用することです (Jenkins 構成で構成されます)。ただし、JGit は実験的なものであり、プロキシに関しても非常に制限されています。

(人気のリクエストにより回答が投稿されました;))

于 2013-11-04T20:00:38.780 に答える
7

Git リポジトリに自己署名証明書を使用していて、Git がコマンド ラインから動作するが、Jenkins Git クライアント プラグインからは動作しない場合は、Jenkins Java キーストアに証明書を追加する必要があります (上記のコメントのtijsで説明されているように) 。 .

これは、Git クライアント プラグインが Java の Apache HttpClient を使用して (git.exe をバイパスして) 直接接続しようとするためです。接続を作成するために通常使用されるすべての Git 設定は無視されますGIT_SSL_NO_VERIFY( curl-ca-bundle.crt).SunCertPathBuilderException: unable to find valid certification path to requested targetスタック トレースなので、「接続に失敗しました」というメッセージしか表示されません。

それを修正するには、tijsが提供するリンクをたどることができます: http://www.mkyong.com/webservices/jax-ws/suncertpathbuilderexception-unable-to-find-valid-certification-path-to-requested-target/

デフォルトの Jenkins インストールを使用している場合は、結果のjssecacertsファイルをにコピーする必要があります。C:\Program Files (x86)\Jenkins\jre\lib\security

Andreas SterbenzInstallCert.javaの元の投稿(web.archive.org に感謝) へのリンク、または code.google でわずかに変更されたバージョンのリンクを見つけることができます。

上記のアプローチが Git クライアント プラグイン バージョン 1.4.6 で機能することを確認しました。

于 2013-12-13T13:50:45.150 に答える
2

Git クライアントを 2.10.0 以降にアップグレードします。

以下のコマンドを実行します。

git config --system http.sslVerify false    
git config --global http.sslVerify false    
于 2017-07-31T07:29:35.690 に答える
1

git プラグインのメイン ページには次のように書かれています。

Git がクローンを作成できなかったことを示す出力が表示される場合は、以下の出力のように、Jenkins 構成設定 (プロジェクト設定ではなく、グローバル設定) に移動し、Git パスを完全修飾パスに変更します (例: "git" ではありません)。 " しかし "/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

于 2013-11-04T17:49:35.080 に答える
1

https プロトコル( 「Jenkins の管理」の下) でgitリポジトリにアクセスするために、ログインとパスワードを使用して資格情報git 資格情報登録できます。Jenkins がこの資格情報をパイプラインで使用するのに役立ちます。

Jenkins Pipelineを使用すると、次のことができます。

node{
    git url: "https://tfs:8080/tfs/job.git", branch: "feature/migration", credentialsId:'dd0d6733-cc2e-4464-bb7d-4b6af86fe40a'
}

ソースコードをジョブのワークスペースにダウンロードします

于 2016-11-10T23:33:19.180 に答える
0

https:// の代わりに git:// を使用すると、jenkins 1.644 と git client 1.19.6 で機能します

于 2016-09-02T15:54:19.280 に答える
0

これは現在修正されており、最新のプラグインの問題ではありません (私がこの 1.19.0 を書いているため)。git-plugin-client 1.6.x で発生しました。

于 2015-09-28T13:52:22.417 に答える
0

私の場合、1 つの Jenkins スレーブは正常に動作しましたが、別のスレーブは動作しませんでした。Git 実行可能ファイルをデフォルトから JGit に変更したところ、どちらも機能しました。

于 2015-08-05T17:05:07.110 に答える
0

証明書の問題を取り除くためにすべてのものを試しましたが、最終的にはgitプラグインの問題です。プラグインを git 1.5 (2.0.3 から) および git-client 1.0.7 (1.6.3 から) にロールバックすると、うまくいきました。資格情報オプションを使用できるように、最初に git-client 1.4.6 を試しましたが、機能しませんでした。したがって、これら 2 つのプラグインを正しく組み合わせることが重要だと思います。このソリューションはJENKINS-20533で言及されました

于 2014-03-04T10:55:22.533 に答える
0

私のソリューションは、Jenkins-Git-Plugin でうまく機能しました。

# create my exec
su root
darngit=/usr/bin/darngit
touch $darngit
echo "#! /usr/bin/env bash" > $darngit
echo "git -c sslVerify=false $@" > $darngit

システム設定に移動し、git 実行可能ファイルを設定 =/usr/bin/darngit

于 2016-11-25T11:35:26.220 に答える
0

Jenkins で Git を使用するには、次の 2 つのプラグインをインストールする必要があります。

  1. Git クライアント プラグイン
  2. Git プラグイン

最初のプラグイン (Git-Client-plugin) は、git 操作 (git add、git commit、git push、git clone など) を実行するための低レベル API です。

2 番目のプラグイン (Git-plugin) は、Git を Jenkins ジョブの SCM オプションとして追加します。

2 番目のプラグインは最初のプラグインの機能に依存しているため、Git が Jenkins と連携するには両方が存在する必要があります。

于 2015-06-25T11:41:25.260 に答える