Gokul
Gokul

Reputation: 191

Can't find project repository in git-server for custom-hooks

I used docker-compose to run a local gitlab server.

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

I want to setup custom-hooks for a project repo i created in the gitlab webUI so that it triggers a jenkins job. As per gitlab documentation, this is the path for repos in omnibus installations where i will have to create custom-hooks directory

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

But inside of /var/opt/gitlab/git-data/repositories , I don't see a group directory or project directory at all

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

I tried searching using find. But it returned nothing. I tried searching by name of files in my project repo, but that didn't return anything as well.

In the gitlab webUI, I am able to see it all. But in the server, none of the file and dir exists.

How is it that I am not able to find any of the file in my repos when i ssh to gitlab-server?

Since I am not able to go this way, I tried by creating a post-receive.d directory under the global hooks directory /opt/gitlab/embedded/service/gitlab-shell/hooks and then adding my post-receive file as below

#!/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 is the name of the container which is in the same network as that of gitlab server.

gitlab docs says then I will have to change permission of the file to git and then make it executable. I did so. But it didn't work either. Also, I find all of the git directories is owned by root in my container.

After pushing code, i figured the hook I put in the /opt/gitlab/embedded/service/gitlab-shell/hooks/post-receive.d directory is not working and in the logs, I see below error right after I push code changes to my maven repo

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

Here, gitlab.example.com is mapped to my public ip in the /etc/hosts file of my host on which I am running docker.

Upvotes: 0

Views: 645

Answers (2)

Lingaiah Banda
Lingaiah Banda

Reputation: 21

If you run the following command inside of the container you should see your group repos

gitlab-rake gitlab:storage:rollback_to_legacy

Upvotes: 2

VonC
VonC

Reputation: 1327384

inside of /var/opt/gitlab/git-data/repositories , I don't see a group directory or project directory at all

The documentation "Install GitLab using docker-compose" includes the following volumes:

  volumes:
    - '$GITLAB_HOME/gitlab/config:/etc/gitlab'
    - '$GITLAB_HOME/gitlab/logs:/var/log/gitlab'
    - '$GITLAB_HOME/gitlab/data:/var/opt/gitlab'

That means if you see locally some repos in $GITLAB_HOME/gitlab/data/git-data/repositories, you should see the same in /var/opt/gitlab/git-data/repositories/.

Assuming, of course, that you have created at least one projet/repo in your GitLab instance.

Upvotes: -1

Related Questions