Я использую Gitlab и пытаюсь вызвать в нем очень простой веб-крюк после получения, который передает полученные коммиты на мой веб-сервер.
#!/bin/bash
git push develop develop
touch test_hook # just for test reasons
touch test_hook
только для проверки, чтобы увидетьесли крюк срабатывает.И это так.Когда я добавляю что-то в репозиторий, ловушка срабатывает и файл test_hook создается / обновляется.Но команда push не выполняется.
Я не могу обнаружить ничего связанного с файлом /var/log/gitlab/gitlab-shell/gitlab-shell.log
.Это все, что появляется в нем при нажатии:
time="2018-05-16T17:15:16+02:00" level=info msg="finished HTTP request" duration=0.040191547 method=POST pid=2175 url="http://127.0.0.1:8080/api/v4/internal/allowed"
time="2018-05-16T17:15:16+02:00" level=info msg="executing git command" command="gitaly-receive-pack unix:/var/opt/gitlab/gitaly/gitaly.socket {\"repository\":{\"storage_name\":\"default\",\"relative_path\":\"group/project.com.git\",\"git_object_directory\":\"\",\"git_alternate_object_directories\":[],\"gl_repository\":\"project-1\"},\"gl_repository\":\"project-1\",\"gl_id\":\"key-1\",\"gl_username\":\"username\"}" pid=2175 user="user with key key-1"
time="2018-05-16T17:15:17+02:00" level=info msg="finished HTTP request" duration=0.050373884 method=POST pid=2187 url="http://127.0.0.1:8080/api/v4/internal/allowed"
time="2018-05-16T17:15:17+02:00" level=info msg="finished HTTP request" duration=0.00705723 method=POST pid=2187 url="http://127.0.0.1:8080/api/v4/internal/pre_receive"
Когда я пытаюсь выполнить push локально, используя пользователя root, это работает:
$ ssh root@my-gitlab.com 'cd /var/opt/gitlab/git-data/repositories/group/project.com.git ; git push develop develop'
To ssh://user@my-webserver.com/git-dir/project.com.git
8fe2450..e48ed81 develop -> develop
Когда я пытаюсь сделать то же самое спользователь git (как это должен делать Gitlab, если я прав):
$ ssh git@my-gitlab.com 'cd /var/opt/gitlab/git-data/repositories/group/project.com.git ; git push develop develop'
GitLab: Disallowed command
Поэтому я предполагаю, что у пользователя git нет прав на выполнение git push
.Если я прав, в чем причина?Могу ли я это изменить?Если да, то как?Если нет, что было бы рекомендуемой альтернативой для выполнения push с помощью webhook?