Jenkins无法获取repo - 代码255权限被拒绝

时间:2015-05-29 17:15:15

标签: git github jenkins

我试图设置Jenkins与git webhooks一起工作。到目前为止我已经

  • Jenkins跑步
  • jenkins用户
  • 下创建了一个ssh密钥对
  • 添加了git deploy keys的密钥
  • 添加了git插件
  • 配置项目以将git与repo一起使用
  • 将分支设置为*/develop以仅观看开发分支
  • 将自定义工作区目录设置为/data/www/<site>
  • ubunutu组添加到jenkins用户(见下文)

在尝试构建项目时,我收到此错误:

Started by user anonymous
Building in workspace /data/www/<site>
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.jenkins.url git@github.com:<repo_url> # timeout=10
ERROR: Error fetching remote repo 'jenkins'
hudson.plugins.git.GitException: Failed to fetch from git@github.com:<repo_url>
    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:485)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1276)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:610)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:532)
    at hudson.model.Run.execute(Run.java:1744)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:98)
    at hudson.model.Executor.run(Executor.java:374)
Caused by: hudson.plugins.git.GitException: Command "git config remote.jenkins.url git@github.com:<repo_url>" returned status code 255:
stdout: 
stderr: error: could not lock config file .git/config: Permission denied

    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1591)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1567)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1563)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1249)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1261)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.setRemoteUrl(CliGitAPIImpl.java:961)
    at hudson.plugins.git.GitAPI.setRemoteUrl(GitAPI.java:160)
    at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:723)
    ... 11 more
ERROR: Error fetching remote repo 'jenkins'

repo已经被ubuntu:ubuntu目录中的其他用户(在这种情况下为/data/www/<site>)提取,所以最初我想将ubunutu组添加到{{1}会解决问题,但没有运气。我还尝试以jenkins用户身份登录并拉动回购,我可以成功完成。

我试过谷歌搜索我能想到的一切,但大多数搜索指向有关键问题的人,而不是配置文件权限问题。在这一点上,我没有想法。

编辑:

jenkins目录中

ls -la

.git
来自父目录的

drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 5 12:13 branches -rw-rw-r-- 1 ubuntu ubuntu 15 Mar 5 18:09 COMMIT_EDITMSG -rw-rw-r-- 1 jenkins jenkins 318 Jun 1 14:55 config -rw-rw-r-- 1 ubuntu ubuntu 73 Mar 5 12:13 description -rw-rw-r-- 1 ubuntu ubuntu 88 May 29 12:50 FETCH_HEAD -rw-rw-r-- 1 ubuntu ubuntu 24 May 28 13:21 HEAD drwxrwxr-x 2 ubuntu ubuntu 4096 May 28 13:49 hooks -rw-rw-r-- 1 ubuntu ubuntu 36480 May 29 12:50 index drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 5 12:13 info drwxrwxr-x 3 ubuntu ubuntu 4096 Mar 5 12:13 logs drwxrwxr-x 260 ubuntu ubuntu 4096 Apr 10 10:40 objects -rw-rw-r-- 1 jenkins jenkins 41 May 29 11:53 ORIG_HEAD -rw-rw-r-- 1 ubuntu ubuntu 179 Mar 5 12:13 packed-refs drwxrwxr-x 5 ubuntu ubuntu 4096 Mar 5 12:13 refs (它是Laravel 5应用程序):

ls -la

组:

drwxrwxr-x 13 ubuntu   ubuntu    4096 Apr  3 11:07 app
-rwxrwxr-x  1 ubuntu   ubuntu    2452 Mar  5 12:13 artisan
drwxrwxr-x  2 ubuntu   ubuntu    4096 Mar 11 08:18 bootstrap
-rwxrwxr-x  1 ubuntu   ubuntu    1094 Mar 11 08:16 composer.json
-rw-rw-r--  1 ubuntu   ubuntu   79004 Mar 11 08:17 composer.lock
-rwxrwxr-x  1 ubuntu   ubuntu     146 Mar  5 12:13 CONTRIBUTING.md
drwxrwxr-x  8 ubuntu   ubuntu    4096 May  6 09:45 frontend
drwxrwxr-x  8 ubuntu   ubuntu    4096 Jun  1 14:56 .git
-rwxrwxr-x  1 ubuntu   ubuntu      12 Mar  5 12:13 .gitattributes
-rwxrwxr-x  1 ubuntu   ubuntu     160 Mar  5 12:13 .gitignore
-rwxrwxr-x  1 ubuntu   ubuntu     567 Mar  5 12:13 phpunit.xml
drwxrwxr-x  7 www-data www-data  4096 Mar  5 17:13 public
-rwxrwxr-x  1 ubuntu   ubuntu    2051 Mar  5 12:13 readme.md
-rwxrwxr-x  1 ubuntu   ubuntu     519 Mar  5 12:13 server.php
drwxrwxr-x 29 ubuntu   ubuntu    4096 Mar 11 08:18 vendor

6 个答案:

答案 0 :(得分:4)

这对我很有帮助:

1 - 在 jenkins 文件夹中找到git config.lock文件:

find . -type f -name "config.lock"

2 - 删除已建立的config.lock文件。

多数民众赞成!

答案 1 :(得分:2)

检查jenkins工作区中.git / config文件的所有者/权限。它可能仍归ubuntu用户所有。将所有者更改为jenkins用户。

答案 2 :(得分:1)

也许你已经看过了,但我发现了a forum post链接给了门票。通过他们,你可能会找到一些东西。

引用:

更多相关列出的错误是:

  • .git\config.lock需要删除
  • 至少需要git-client-plugin版本1.6.2

答案 3 :(得分:0)

为了对此进行故障排除,您应该以{{1​​}}用户身份登录或以su身份登录(确保Jenkins运行为jenkins),使用相同的环境,Jenkins服务是使用运行,然后jenkins,然后cd /data/www/<site>/.gitls -als config.lock。这是Git创建时遇到问题的文件 - 这些命令将检查它是否已经存在,如果没有,touch config.lock用户是否可以创建它。

尽管看起来不太可能,最可能的问题是你需要重启一些东西或重启,因为new group-membership permissions are not applied to existing processes or their children。你重启詹金斯了吗?如果没有,请停止Jenkins,并根据它的启动方式 - 你需要一个新的shell - 重新启动它如果你需要非常肯定的话重新启动服务器。

另请报告您的文件系统类型和挂载选项。

答案 4 :(得分:0)

ruby​​gems / installer.rb中存在错误

使用gem update --system将rubygems更新为解决此问题的最新稳定版本。

答案 5 :(得分:0)

Jenkins计算机重新启动后遇到同样的问题,修复了更新.gitconfig中代理的凭据以及从Jenkins工作区删除作业文件夹,如下所示:

$ cat ~/.gitconfig

以下更新为:

[http]
        proxy = http://username:updated-password@proxy.myserver.com:80
        sslverify = false
[https]
        proxy = http://username:updated-password@proxy.myserver.com:80
        sslverify = false
[url "http://github.com/"]
        insteadOf = git://github.com/

[user]
        name = Arpit Aggarwal
        email = arpit.aggarwal@xebia.com
[core]
        autocrlf = true
        excludesfile = C:\\Data\\gitignore_global.txt