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

问题描述 投票:0回答:1

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

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安装中回购的路径,在该安装中,我将必须创建定制挂钩目录

/var/opt/gitlab/git-data/repositories/<group>/<project>.git

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

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:~#

我尝试使用查找进行搜索。但是它什么也没返回。我尝试在项目存储库中按文件名搜索,但是也没有返回任何内容。

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

当我SSH到gitlab-server时,如何在我的存储库中找不到任何文件?

由于无法执行此操作,因此我尝试通过在全局钩子目录/ opt / gitlab / embedded / service / gitlab-shell / hooks下创建一个post-receive.d目录,然后添加我的接收后文件如下

#!/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存储库中

==> /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。

jenkins docker-compose gitlab githooks gitlab-omnibus
1个回答
-1
投票

在/ var / opt / gitlab / git-data / repositories内部,我完全看不到组目录或项目目录

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

  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中本地看到某些存储库,则应该在/var/opt/gitlab/git-data/repositories/中看到相同的存储库。

当然,假设您在GitLab实例中至少创建了一个projet / repo。

© www.soinside.com 2019 - 2024. All rights reserved.