Git
jenkins 無法連接到 git 儲存庫
我無法以 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 的訪問在 shell 上工作:
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 master 的 pub 密鑰添加到 build slave,有助於使配置正常工作:
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 是 jenkins master,dilbert 是 build slave。ssh 從 master 到 slave 工作。
jenkins@store:~$ ssh dilbert uptime 16:06:21 up 3 days, 18:53, 13 users, load average: 0,31, 0,38, 0,50
任何想法如何調試這個?
身份驗證通過 ssh 工作。您是否已將 jenkins 使用者的公共 ssh-key 添加到您的 git-server 上的 git-user 中?
如果您需要有關如何設置 ssh 身份驗證的說明,請告訴我,我將在此處編輯此文章。
/編輯:
很高興你讓它執行起來。我在 jenkins 官方網站上查看了有關配置的 ssh 部分的詳細手冊,但我找不到任何內容。
所以這裡有一個快速概述 - 如果這是您需要的,請告訴我。
- jenkins slave(建構機器)連接到 git-server(jenkins master)
- 建構機器以 jenkins 使用者身份執行(例如 jenkins@dilbert:~$ )
- git-server 以 git 使用者身份執行(例如 git@store:~$ )
- jenkins@dilbert 公鑰需要放在 git@store authorized_keys
- 執行
jenkins@dilbert:~/.ssh$ ssh-copy-id git@store
將 jenkins@dilbert ssh 公鑰複製到 git 伺服器