jenkinsはgitリポジトリへの接続に失敗します


11

Jenkinsがアクセスできるような方法でgitリポジトリのURLを構成することはできません。

[プロジェクト]> [構成]> [ソースコード管理]で、リポジトリURLを「git @ store:repositories / testproject.git」に設定します

私はこのエラーを受け取ります:

Failed to connect to repository : Command "/usr/bin/git -c core.askpass=true ls-remote -h git@store:repositories/testproject.git HEAD" returned status code 128:
stdout: 
stderr: Permission denied, please try again. 
Permission denied, please try again. 
Permission denied (publickey,password). 
fatal: Could not read from remote repository.

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

そのURLを使用したアクセスはシェルで機能します。

jenkins@dilbert:~$ /usr/bin/git -c core.askpass=true ls-remote -h git@store:repositories/testproject.git
git@store's password: 
4fd35a4f528e2f2921a52cfd03918b7cbde3d253    refs/heads/master

パスワードの入力を求められますが、機能します。

Jenkinsの資格情報に同じパスワードを「git /」に関連付け、「git @ store /」も試しました。動作しませんでした。

これはgithubではなく、ローカルgitリポジトリに関するものです。

更新:

jenkinsマスターからビルドスレーブにpubキーを追加すると、構成が機能するようになりました。

ssh-copy-id jenkins@dilbert

今、ビルドは失敗しています:

 > /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > /usr/bin/git config remote.origin.url git@store:repositories/testproject.git # timeout=10
Fetching upstream changes from git@store:repositories/testproject.git
 > /usr/bin/git --version # timeout=10
 > /usr/bin/git -c core.askpass=true fetch --tags --progress git@store:repositories/testproject.git +refs/heads/*:refs/remotes/origin/*
ERROR: Error fetching remote repo 'origin'
hudson.plugins.git.GitException: Failed to fetch from git@store:repositories/testproject.git
    at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:735)
    at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:983)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1016)
    at hudson.scm.SCM.checkout(SCM.java:484)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1270)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:609)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:531)
    at hudson.model.Run.execute(Run.java:1751)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:89)
    at hudson.model.Executor.run(Executor.java:240)
Caused by: hudson.plugins.git.GitException: Command "/usr/bin/git -c core.askpass=true fetch --tags --progress git@store:repositories/testproject.git +refs/heads/*:refs/remotes/origin/*" returned status code 128:
stdout: 
stderr: Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
fatal: Could not read from remote repository.

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

storeはジェンキンスマスター、dilbertはビルドスレーブです。マスターからスレーブへのsshが動作します。

jenkins@store:~$ ssh dilbert uptime
 16:06:21 up 3 days, 18:53, 13 users,  load average: 0,31, 0,38, 0,50

これをデバッグする方法はありますか?

回答:


5

認証はsshを介して機能します。jenkinsユーザーの公開ssh-keyをgit-serverのgit-userに追加しましたか?

ssh-authenticationのセットアップ方法に関する指示が必要な場合はお知らせください。この投稿をここで編集します。

/編集:

実行できてうれしいです。構成のssh部分に関する詳細なマニュアルをjenkinsの公式Webサイトで探しましたが、見つかりませんでした。

簡単な概要を以下に示します-これが必要な場合はお知らせください。

  1. jenkinsスレーブ(構築マシン)はgit-server(jenkinsマスター)に接続します
  2. ビルドマシンはjenkinsユーザーとして実行されます(例:jenkins @ dilbert:〜$)
  3. git-serverはgitユーザーとして実行されます(例git @ store:〜$)
  4. jenkins @ dilbert公開鍵はgit @ store authorized_keysに配置する必要があります
  5. 実行jenkins@dilbert:~/.ssh$ ssh-copy-id git@storeしてjenkins @ dilbert ssh公開鍵をgitサーバーにコピーします

どのユーザーがssh-keyをどこに追加するのか説明していただけますか?
ヨルクバイエル

ジェンキンスユーザーは<ジェンキンスユーザーのホームディレクトリ> /に保存されている彼のパブの鍵を持っていなければならないのssh / id_rsa.pub <gitのユーザのホームディレクトリ> /に追加するこの1つのニーズのssh / authorized_keysに。。
kindaleek

「jenkins @ store:〜/ .ssh $ ssh-copy-id git @ store」を実行すると、設定を受け入れるためにjenkinsが取得されます(これは改善されます)が、リモートjenkinsスレーブでのビルドは失敗します。何か案が?
ヨルクバイエル

読むのが良い。残念ながら、gitでの私の経験はほぼ終わりました... 今間違えているかもしれませんが、gitプラットフォームでユーザー(Joerg Beyerなど)として作業する必要がありますか?そこでアクセス許可を確認してください(ユーザーが属する各グループのWebインターフェイスでユーザーのアクセス許可を変更できます)。/ EDITをテストするために開発者に設定してみてください。 リモートジェンキンススレーブを作成しました-別のキーペアを使用する場合、公開キーをgitのauthorized_keysにもう一度追加する必要があります
kindaleek

わからない。質問を更新しました。どこに追加するにはどのsshキーが必要ですか?
ヨルク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.