私の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
_
私もこの問題を抱えており、マスターJenkinsサーバー上の問題のあるリポジトリのワークスペースを削除するによってのみ解決できました。
問題は、いくつかのビルドで接続エラー(@gbjbaanbが言ったように)があったことだと思います(Bitbucketがクラッシュしました)。これにより、マスター上のワークスペースが破損した状態になり、Jenkinsはキャッシュされたワークスペースを可能な限り使用しようとするため、後続のすべてのビルドも失敗しました。
私にとって、これはgit-clientプラグインの10分のデフォルトタイムアウトに達していました。
ジョブで高度なクローン動作を設定し、タイムアウトを上げることで解決しました。
Gitプラグインセクションの下のジョブ設定ページに、「追加」ドロップダウンリストがあります。そのドロップダウンリスト内には、「高度なクローン動作」という選択肢があります。高度なクローン動作を追加すると、「クローンおよびフェッチ操作のタイムアウト(分単位)」のフィールドが表示されます。
操作の前に追加の動作を追加すると、クローンとチェックアウトのタイムアウトを上げることができます-これはコンソールでより高いタイムアウト値に変換されます
- 高度なチェックアウト動作
- 高度なクローン動作
タイムアウトに値を入力すると、デフォルトが上書きされます。
JENKINS-20445 から得た知識。
この問題は、フェッチ中のタイムアウトチェックが原因である可能性があります。以下のアドバイスに従うことで、それを増やすことができます。
Gitプラグインセクションの下のジョブ設定ページに、「追加」ドロップダウンリストがあります。そのドロップダウンリスト内には、「高度なクローン動作」という選択肢があります。高度なクローン動作を追加すると、「クローンおよびフェッチ操作のタイムアウト(分単位)」のフィールドが表示されます。
Jenkins専用のBitBucketアカウントを作成し、リポジトリへの管理者権限を与えることで、この問題を解決できました。
次に、リポジトリURLを次のようにしました:https://JenkinsAccountUsername:[email protected]/OwnerOfRepositoryUsername/ProjectName.git
。
BitBucketに接続するときに「ssh」を「https」に切り替えることで、同様の問題を解決しました。 bitbucket UIでは、「クローン」をクリックすると、ssh/httpsのドロップダウンオプションがあります。 httpsを使用した後、git pullは機能します。
リモートGITリポジトリが巨大でクローン作成が非常に遅いという、Windowsサーバーでも同様のタイムアウトの問題に直面しました。
この post からの提案に基づいて、タイムアウトの問題を修正するために以下を行いました。
リポジトリを手動で複製します(必ずしもgit clone --mirror [email protected]:my-user/my-repository.git
2番目の提案に出くわす前に、既にフォルダーに複製していたため。とにかく、もし新しく起動する場合は、おそらくmirror
オプションでクローンできます)。これは、参照リポジトリとして機能します。
Source Code Management
次のようにジェンキンスの仕事で
Repositories:通常どおりこれを設定します
構築するブランチ:通常どおりこれを設定します
リポジトリブラウザ:(自動)(デフォルト値)
追加の動作:高度なクローン動作
タグの取得-チェックなし
初期クローンのrefspecを尊重する-Unchecked
浅いクローン-チェック済み
浅いクローンの深さ-1(歴史全体については気にせず、最新のものだけで十分です)
複製中に使用する参照レポのパス-レポ全体が複製されるレポのフォルダパス(参照ステップ1上記)
クローンおよびフェッチ操作のタイムアウト(分単位)-私の場合は空白のままにします(別のタイムアウトが必要な場合(デフォルトは10分)、ここで言及できます)