Вопросы

Не удается найти репозиторий проекта на 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.

Читать:
Psexec отображает только первую строку через Jenkins

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 моего хоста, на котором я запускаю докер.

Похожие записи

Как прослушивать изменения (или получать поток) из вложенных вложенных коллекций?

admin

Различные регионы для Firestore DB и Firebase Cloud Functions

admin

Как извлечь количество наблюдений за каждый год

admin

Как программно остановить контейнер AWS Fargate?

admin

почему базовый указатель может указывать на производный объект только при публичном наследовании?

admin

Невозможно привязать данные к таблице данных материалов Angular

admin