web-dev-qa-db-ja.com

gitからフェッチするときにJenkinsが失敗するのに、コマンドラインが失敗するのはなぜですか?

私のJenkinsビルドはすべて_git fetch_行で失敗します。

_git fetch --tags --progress [email protected]:ethenwilson/whentoact.git_で失敗しています

_Started by user anonymous
Building in workspace /Users/ethen/.jenkins/workspace/Build NikNik
 > git rev-parse --is-inside-work-tree
Fetching changes from the remote Git repository
 > git config remote.Origin.url [email protected]:ethenwilson/whentoact.git
Fetching upstream changes from [email protected]:ethenwilson/whentoact.git
 > git --version
using GIT_SSH to set credentials NikNik BitBucket SSH Key
 > git fetch --tags --progress [email protected]:ethenwilson/whentoact.git +refs/heads/*:refs/remotes/Origin/*
FATAL: Failed to fetch from [email protected]:ethenwilson/whentoact.git
hudson.plugins.git.GitException: Failed to fetch from [email protected]:ethenwilson/whentoact.git
    at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.Java:622)
    at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.Java:854)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.Java:879)
    at hudson.model.AbstractProject.checkout(AbstractProject.Java:1252)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.Java:624)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.Java:86)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.Java:530)
    at hudson.model.Run.execute(Run.Java:1732)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.Java:43)
    at hudson.model.ResourceController.execute(ResourceController.Java:88)
    at hudson.model.Executor.run(Executor.Java:234)
Caused by: hudson.plugins.git.GitException: Command "git fetch --tags --progress [email protected]:ethenwilson/whentoact.git +refs/heads/*:refs/remotes/Origin/*" returned status code 128:
stdout: 
stderr: remote: Counting objects: 2682, done.[K
remote: Compressing objects:   0% (1/1399)   [K
remote: Compressing objects:   1% (14/1399)   [K
...
remote: Compressing objects:  99% (1398/1399)   [K
remote: Compressing objects: 100% (1399/1399)   [K
remote: Compressing objects: 100% (1399/1399), done.[K
Receiving objects:   0% (1/2682)   
Receiving objects:   1% (27/2682)   
...  
Receiving objects:  78% (2092/2682), 4.07 MiB | 1.59 MiB/s   
Corrupted MAC on input.
Disconnecting: Packet corrupt
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.Java:1325)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.Java:1186)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$200(CliGitAPIImpl.Java:87)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.Java:257)
    at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.Java:620)
    ... 10 more
_

コマンドラインから_git fetch --tags --progress [email protected]:ethenwilson/whentoact.git_を実行すると正常に機能します。つまり、SSHキーが機能している必要があります。

SSH検証を使用してJenkinsでBitBucketに接続しています。 Jenkinsは、それが配置されているファイル(デフォルトのファイル)からキーを取得するため、Jenkinsはコマンドラインから実行するときと同じキーを使用していることがわかります。

Jenkins用のBitBucketおよびGitプラグインの最新ビルドを使用しています。 MacにインストールしたGitのバージョンは1.8.5.2 (Apple Git-48)です。

私のジェンキンス開始コマンドは_Nohup Java -jar ~/jenkins.war --httpPort=8081 --ajp13Port=8010 > /tmp/jenkins.log 2>&1 &_です。

何が悪いの?

編集:私が間違っていたので、誤ってSSHキーを間違った場所に置くオプションを押していました。今、@ borrrdenの提案を使用すると、同じエラーが表示されます。 **編集: @borrrdenが示唆したように、開始コマンドを_Nohup Java -Dorg.jenkinsci.plugins.gitclient.Git.useCLI=true -jar ~/Downloads/jenkins.war --httpPort=8081 --ajp13Port=8010 > /tmp/jenkins.log 2>&1 &_に変更すると、別のクラッシュが発生します。

_Started by user anonymous
Building in workspace /Users/ethen/.jenkins/workspace/Build NikNik
 > git rev-parse --is-inside-work-tree
Fetching changes from the remote Git repository
 > git config remote.Origin.url [email protected]:ethenwilson/whentoact.git
Fetching upstream changes from [email protected]:ethenwilson/whentoact.git
 > git --version
using GIT_SSH to set credentials NikNik BitBucket SSH Key
 > git fetch --tags --progress [email protected]:ethenwilson/whentoact.git +refs/heads/*:refs/remotes/Origin/*
FATAL: Failed to fetch from [email protected]:ethenwilson/whentoact.git
hudson.plugins.git.GitException: Failed to fetch from [email protected]:ethenwilson/whentoact.git
    at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.Java:622)
    at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.Java:854)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.Java:879)
    at hudson.model.AbstractProject.checkout(AbstractProject.Java:1252)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.Java:624)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.Java:86)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.Java:530)
    at hudson.model.Run.execute(Run.Java:1732)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.Java:43)
    at hudson.model.ResourceController.execute(ResourceController.Java:88)
    at hudson.model.Executor.run(Executor.Java:234)
Caused by: hudson.plugins.git.GitException: Command "git fetch --tags --progress [email protected]:ethenwilson/whentoact.git +refs/heads/*:refs/remotes/Origin/*" returned status code 128:
stdout: 
stderr: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.Java:1406)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.Java:1194)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$200(CliGitAPIImpl.Java:87)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.Java:265)
    at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.Java:620)
    ... 10 more
_
23
E.A. Wilson

私もこの問題を抱えており、マスターJenkinsサーバー上の問題のあるリポジトリのワークスペースを削除するによってのみ解決できました。

問題は、いくつかのビルドで接続エラー(@gbjbaanbが言ったように)があったことだと思います(Bitbucketがクラッシュしました)。これにより、マスター上のワークスペースが破損した状態になり、Jenkinsはキャッシュされたワークスペースを可能な限り使用しようとするため、後続のすべてのビルドも失敗しました。

6
leondepeon

enter image description here 1)ジョブ設定に移動

2)「ソースコード管理」セクションに移動します

3)追加の動作>追加

4)「リポジトリを消去してクローンを強制する」を選択します

これにより、ジョブ用のワークスペースのみが削除および再クローンされます。削除する前に確認したい場合は、バッチ/バッシュコマンドのビルドステップを介して$ WORKSPACE変数をエコーアウトすることをお勧めします。

また、これによりビルドが非常に遅くなるため、1回のビルド後に削除することをお勧めします。

5
Janac Meena

ネットワークエラーのようです:

オブジェクトの受信:78%(2092/2682)、4.07 MiB | 1.59 MiB/s

入力の破損したMAC。

切断中:パケットが破損しています

致命的:リモートエンドが予期せずハングアップしました

致命的:初期EOF

致命的:インデックスパックに失敗しました

ネットワークが途中で78%で破損したことを示唆しています。

共通問題 のようです

2
gbjbaanb

私にとって、これはgit-clientプラグインの10分のデフォルトタイムアウトに達していました。

ジョブで高度なクローン動作を設定し、タイムアウトを上げることで解決しました。

Gitプラグインセクションの下のジョブ設定ページに、「追加」ドロップダウンリストがあります。そのドロップダウンリスト内には、「高度なクローン動作」という選択肢があります。高度なクローン動作を追加すると、「クローンおよびフェッチ操作のタイムアウト(分単位)」のフィールドが表示されます。

操作の前に追加の動作を追加すると、クローンとチェックアウトのタイムアウトを上げることができます-これはコンソールでより高いタイムアウト値に変換されます

  • 高度なチェックアウト動作
  • 高度なクローン動作

タイムアウトに値を入力すると、デフォルトが上書きされます。

JENKINS-20445 から得た知識。

2
Dan Caseley

この問題は、フェッチ中のタイムアウトチェックが原因である可能性があります。以下のアドバイスに従うことで、それを増やすことができます。

Gitプラグインセクションの下のジョブ設定ページに、「追加」ドロップダウンリストがあります。そのドロップダウンリスト内には、「高度なクローン動作」という選択肢があります。高度なクローン動作を追加すると、「クローンおよびフェッチ操作のタイムアウト(分単位)」のフィールドが表示されます。

1
Sadiq Ali

Jenkins専用のBitBucketアカウントを作成し、リポジトリへの管理者権限を与えることで、この問題を解決できました。

次に、リポジトリURLを次のようにしました:https://JenkinsAccountUsername:[email protected]/OwnerOfRepositoryUsername/ProjectName.git

0
E.A. Wilson

BitBucketに接続するときに「ssh」を「https」に切り替えることで、同様の問題を解決しました。 bitbucket UIでは、「クローン」をクリックすると、ssh/httpsのドロップダウンオプションがあります。 httpsを使用した後、git pullは機能します。

0
Emily

リモートGITリポジトリが巨大でクローン作成が非常に遅いという、Windowsサーバーでも同様のタイムアウトの問題に直面しました。

この post からの提案に基づいて、タイムアウトの問題を修正するために以下を行いました。

  1. リポジトリを手動で複製します(必ずしもgit clone --mirror [email protected]:my-user/my-repository.git 2番目の提案に出くわす前に、既にフォルダーに複製していたため。とにかく、もし新しく起動する場合は、おそらくmirrorオプションでクローンできます)。これは、参照リポジトリとして機能します。

  2. Source Code Management次のようにジェンキンスの仕事で

Repositories:通常どおりこれを設定します

構築するブランチ:通常どおりこれを設定します

リポジトリブラウザ:(自動)(デフォルト値)

追加の動作:高度なクローン動作

タグの取得-チェックなし

初期クローンのrefspecを尊重する-Unchecked

浅いクローン-チェック済み

浅いクローンの深さ-1(歴史全体については気にせず、最新のものだけで十分です)

複製中に使用する参照レポのパス-レポ全体が複製されるレポのフォルダパス(参照ステップ1上記)

クローンおよびフェッチ操作のタイムアウト(分単位)-私の場合は空白のままにします(別のタイムアウトが必要な場合(デフォルトは10分)、ここで言及できます)

0
Rajaraman