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

标签 git github jenkins

我正在尝试设置 Jenkins 以使用 git webhooks。到目前为止我已经

  • Jenkins 运行
  • jenkins 下创建了一个 ssh key 对用户
  • 将 key 添加到 git 部署 key
  • 添加了 git 插件
  • 将项目配置为在 repo 中使用 git
  • 将分支设置为*/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> 中 pull 目录,所以最初我想添加 ubunutu组至jenkins会解决问题,但没有运气。我也试过以 jenkins 身份登录用户并 pull repo 协议(protocol),我可以成功完成。

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

编辑:

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

ls -la来自父目录(这是一个 Laravel 5 应用程序):

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

群组:

$ cat /etc/group | grep jenkins
ubuntu:x:1000:jenkins
jenkins:x:113:

$ cat /etc/group | grep ubuntu
adm:x:4:syslog,ubuntu
dialout:x:20:ubuntu
cdrom:x:24:ubuntu
floppy:x:25:ubuntu
sudo:x:27:ubuntu
audio:x:29:ubuntu
dip:x:30:ubuntu
video:x:44:ubuntu
plugdev:x:46:ubuntu
netdev:x:102:ubuntu
ubuntu:x:1000:jenkins

最佳答案

这对我来说非常好:

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

找到 . -type f -name "config.lock"

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

就是这样!

关于git - Jenkins 无法获取 repo - 代码 255 权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30535422/

相关文章:

git - 推送到 github 后 Jar 文件损坏

git - 为 Git 分支名称创建别名

Git 查找陈旧文件

git - 将现有的 git 存储库推送到 github : system cannot make a pull

jenkins - 如何在本地文件系统上查看 Jenkins 服务器控制台输出?

jenkins - 如何将 'git describe' 的输出获取到 Jenkins 构建名称中

java - Eclipse Maven 与 Jenkins 集成

sql-server - 使用 SQL Server 的 git 的最佳实践是什么

git - 在没有推送的情况下跨机器同步 Git repos

git - 如何用GitHub管理大数据文件?