Не удается найти репозиторий проекта на git-сервере для пользовательских хуков

Я использовал 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, чтобы он запускал задание Дженкинса. Согласно документации gitlab, это путь для репозиториев в установках омнибуса, где мне нужно будет создать каталог custom-hooks.

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

Но внутри / var / opt / gitlab / git-data / repositories я вообще не вижу каталог группы или каталог проекта

[email protected]:~# 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
[email protected]:~#

Я пробовал искать с помощью find. Но ничего не вернуло. Я попытался выполнить поиск по имени файлов в моем репозитории проекта, но это тоже ничего не вернуло.

В gitlab webUI я могу все это увидеть. Но на сервере ни один из файлов и директорий не существует.

Почему я не могу найти какой-либо файл в своих репозиториях, когда я использую ssh на gitlab-server?

Поскольку я не могу пойти по этому пути, я попытался создать каталог post-receive.d в каталоге глобальных перехватчиков / opt / gitlab / embedded / service / gitlab-shell / hooks, а затем добавил свой файл после получения, как показано ниже.

#!/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 'https://jenkins:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')
curl -u "jenkins:1234" -H "$crumb" -X POST https://jenkins:8080/job/maven/build?delay=0sec

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

jenkins — это имя контейнера, который находится в той же сети, что и сервер gitlab.

См. также:  Как запускать конвейер GitLab CI при каждом нажатии на GitHub?

gitlab docs говорит, что тогда мне придется изменить разрешение файла на 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: "https://unix/var/opt/gitlab/gitlab-workhorse/socket:/jenkins/maven.git/info/refs?service=git-receive-pack", host: "gitlab.example.com:8090"

Здесь gitlab.example.com сопоставлен с моим общедоступным IP-адресом в файле / etc / hosts моего хоста, на котором я запускаю докер.

Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 2
  1. Gokul

    внутри / var / opt / gitlab / git-data / repositories я вообще не вижу каталог группы или каталог проекта

    Документация «Установите GitLab с помощью 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.

    Я тоже не вижу этого в моем локальном каталоге. Но в gitab webUI он есть. Я вижу группу, проект и файлы, которые я создал в репозитории проекта. Я сделал git-клон пустого каталога проекта после его создания через веб-интерфейс. Затем отправляются файлы, и то же самое отражается в веб-интерфейсе gitlab — группа, репозиторий проекта и файлы. Но я не могу найти ничего из этого, когда вхожу на сервер gitlab и ищу их. person Gokul; 18.04.2020

    @BeingGokul Как запустить GItLab через Docker-compose? У вас какой-то объем определен? person Gokul; 18.04.2020

    Да. Отредактировали вопрос, чтобы включить docker-compose. Меня беспокоит то, что в gitlab webUI я вижу группу jenkins, которую я создал, а внутри нее я создал проект maven. А затем клонировал его локально и отправил файлы. То же самое и в веб-интерфейсе. Но когда я вхожу на сервер gitlab и ищу его, чтобы добавить каталог custom-hooks и определить хуки, их нет. Не каталог с названием группы jenkins или названием проекта maven.git person Gokul; 18.04.2020

    @BeingGokul Вы должны увидеть это в $PWD/srv/gitlab/data person Gokul; 18.04.2020

    Допустим, я вообще не определял объемы. Мой вопрос: я должен найти каталог проекта и файлы внутри контейнера сервера gitlab, верно? Потому что он там, когда я вхожу в веб-интерфейс. Итак, он должен храниться где-то внутри контейнера справа. Согласно документации gitlab, /var/opt/gitlab/git-data/repositories/?group›/ person Gokul; 18.04.2020

    @BeingGokul Если вы хотите видеть это как локально, так и в контейнере, тома являются обязательными. person Gokul; 18.04.2020

    Я думаю, вы все еще неправильно меня понимаете. Меня не волнует, смогу ли я увидеть это на месте или нет. Мой единственный вопрос: у меня запущен контейнер докеров под названием git-server, и из веб-интерфейса я создал группу (jenkins) и проект (maven). Теперь я попадаю в свой контейнер, используя команду docker exec -it git-server bash. Теперь, согласно документации gitlab, сведения о группе и проекте будут находиться по пути / var / opt / gitlab / git-data / repositories / ‹group› / ‹project› .git. Но его нет. person Gokul; 18.04.2020

  2. Gokul

    Если вы запустите следующую команду внутри контейнера, вы должны увидеть свои групповые репозитории

    gitlab-rake gitlab:storage:rollback_to_legacy
    
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: