首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在git-server中找不到自定义挂钩的项目存储库

在git-server中找不到自定义挂钩的项目存储库
EN

Stack Overflow用户
提问于 2020-04-18 13:09:26
回答 2查看 360关注 0票数 0

我使用docker-compose运行本地gitlab服务器。

代码语言:javascript
复制
git:
    container_name: git-server
    image: gitlab/gitlab-ce:latest
    hostname: 'gitlab.example.com'
    ports:
      - '8090:80'
      - '22:22'
    volumes:
      - "$PWD/srv/gitlab/config:/etc/gitlab"
      - "$PWD/srv/gitlab/logs:/var/log/gitlab"
      - "$PWD/srv/gitlab/data:/var/opt/gitlab"
    networks:
      - net

我想为我在gitlab webUI中创建的一个项目存储库设置自定义钩子,以便它触发一个jenkins作业。根据gitlab文档,这是omnibus安装中repos的路径,我必须在其中创建自定义钩子目录

代码语言:javascript
复制
/var/opt/gitlab/git-data/repositories/<group>/<project>.git

但是在/var/opt/gitlab/git-data/repositories中,我根本看不到组目录或项目目录

代码语言:javascript
复制
root@gitlab:~# ls -lt /var/opt/gitlab/git-data/repositories
total 0
drwxr-s---. 3 git root 16 Apr 18 04:05 @hashed
drwxr-sr-x. 3 git root 17 Apr 18 04:00 +gitaly
root@gitlab:~#

我尝试使用find进行搜索。但它没有返回任何内容。我尝试在我的项目存储库中按文件名进行搜索,但同样没有返回任何结果。

在gitlab webUI中,我可以看到所有内容。但是在服务器中,文件和目录都不存在。

当我ssh到gitlab-server时,怎么会在我的repos中找不到任何文件呢?

因为我不能这样做,所以我尝试在全局钩子目录/opt/gitlab/embedded/service/gitlab-shell/hooks下创建一个post-receive.d目录,然后添加post-receive文件,如下所示

代码语言:javascript
复制
#!/bin/bash


# Get branch name from ref head

if ! [ -t 0 ]; then
  read -a ref
fi
IFS='/' read -ra REF <<< "${ref[2]}"
branch="${REF[2]}"

if [ "$branch" == "master" ]; then
crumb=$(curl -u "jenkins:1234" -s 'http://jenkins:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')
curl -u "jenkins:1234" -H "$crumb" -X POST http://jenkins:8080/job/maven/build?delay=0sec

  if [ $? -eq 0 ] ; then
    echo "*** Ok"
  else
    echo "*** Error"
  fi

jenkins是容器的名称,该容器与gitlab服务器处于同一网络中。

gitlab文档说,然后我将不得不将文件的权限更改为git,然后使其可执行。我是这么做的。但它也不起作用。另外,我发现在我的容器中所有的git目录都归root所有。

在推送代码后,我发现放在/opt/gitlab/embedded/service/gitlab-shell/hooks/post-receive.d目录中的钩子不起作用,在日志中,我在将代码更改推送到maven代码库后立即看到了下面的错误

代码语言:javascript
复制
==> /var/log/gitlab/nginx/gitlab_error.log <==
2020/04/18 04:57:31 [crit] 832#0: *256 connect() to unix:/var/opt/gitlab/gitlab-workhorse/socket failed (13: Permission denied) while connecting to upstream, client: <my_public_ip>, server: gitlab.example.com, request: "GET /jenkins/maven.git/info/refs?service=git-receive-pack HTTP/1.1", upstream: "http://unix:/var/opt/gitlab/gitlab-workhorse/socket:/jenkins/maven.git/info/refs?service=git-receive-pack", host: "gitlab.example.com:8090"

在这里,gitlab.example.com被映射到我正在运行docker的主机的/etc/hosts文件中的公共ip。

EN

回答 2

Stack Overflow用户

发布于 2021-01-12 02:49:59

如果您在容器内运行以下命令,您应该看到您的组repos

代码语言:javascript
复制
gitlab-rake gitlab:storage:rollback_to_legacy
票数 1
EN

Stack Overflow用户

发布于 2020-04-18 13:27:43

在/var/opt/gitlab/git-data/repositories中,我根本看不到组目录或项目目录

文档"Install GitLab using docker-compose“包括以下各卷:

代码语言:javascript
复制
  volumes:
    - '$GITLAB_HOME/gitlab/config:/etc/gitlab'
    - '$GITLAB_HOME/gitlab/logs:/var/log/gitlab'
    - '$GITLAB_HOME/gitlab/data:/var/opt/gitlab'

这意味着如果你在$GITLAB_HOME/gitlab/data/git-data/repositories中看到一些本地的repos,你应该会在/var/opt/gitlab/git-data/repositories/中看到同样的东西。

当然,假设您已经在GitLab实例中创建了至少一个项目/存储库。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61284485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档