我使用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安装中repos的路径,我必须在其中创建自定义钩子目录
/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:~#我尝试使用find进行搜索。但它没有返回任何内容。我尝试在我的项目存储库中按文件名进行搜索,但同样没有返回任何结果。
在gitlab webUI中,我可以看到所有内容。但是在服务器中,文件和目录都不存在。
当我ssh到gitlab-server时,怎么会在我的repos中找不到任何文件呢?
因为我不能这样做,所以我尝试在全局钩子目录/opt/gitlab/embedded/service/gitlab-shell/hooks下创建一个post-receive.d目录,然后添加post-receive文件,如下所示
#!/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"
fijenkins是容器的名称,该容器与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。
发布于 2021-01-12 02:49:59
如果您在容器内运行以下命令,您应该看到您的组repos
gitlab-rake gitlab:storage:rollback_to_legacy发布于 2020-04-18 13:27:43
在/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中看到一些本地的repos,你应该会在/var/opt/gitlab/git-data/repositories/中看到同样的东西。
当然,假设您已经在GitLab实例中创建了至少一个项目/存储库。
https://stackoverflow.com/questions/61284485
复制相似问题