Подтвердить что ты не робот

Как создать веб-сайт Gitlab для обновления зеркального репо на Github?

Я хотел бы создать webhook внутри Gitlab, чтобы автоматически обновлять зеркальный репозиторий в Github, всякий раз, когда происходит событие push. Я проверил эту , но я не понял, как это делается.

Моя версия Gitlab - 6.5. Вот страница конфигурации:

inserir a descrição da imagem aqui

Что мне следует поместить в URL? Где мне нужно разместить script для обновления хранилища?

4b9b3361

Ответ 1

Для этого вам не нужен webhook. Обычный крюк после приема будет работать очень хорошо.

Чтобы создать и использовать такой крючок, вам просто нужно войти в систему на сервере, где установлен ваш gitlab, и создать ключ ssh для пользователя git.

sudo -u git ssh-keygen -f /home/git/.ssh/reponame_key

(не вводите кодовую фразу при запросе)

Перейдите в свою учетную запись github и добавьте открытый ключ (он был создан как /home/git/ssh/reponame_key.pub) в ваш проект в качестве ключа развертывания. посмотрите https://help.github.com/articles/managing-deploy-keys, если вам нужна помощь.

Как только это будет сделано, вам просто нужно настроить соединение между сервером git и github: добавьте псевдоним в git user ssh configuration (добавьте следующие строки в /home/git/.ssh/config - создайте его, если он не присутствует)

Host reponame  
IdentityFile /home/git/.ssh/reponame_key  
HostName github.com  
User git 

Теперь добавьте новый пульт (с использованием созданного вами псевдонима) в ваш репозиторий:

cd /home/git/repositories/namespace/reponame.git

git remote add --mirror github reponame:youruser/reponame.git

Теперь, когда все будет на месте, вам нужно будет создать фактический крючок:

cd /home/git/repositories/namespace/reponame.git/hooks

echo "exec git push --quiet github &" >> post-receive

chmod 755 post-receive

Последняя команда очень важна, потому что git проверяет, действительно ли выполнялся запуск hook перед запуском.

Что это!

(Замените reponame, namespace и youruser в соответствии с вашими реальными учетными записями и наслаждайтесь).

Последнее примечание: если вы хотите, чтобы ваше имя andavatar было близко к github, убедитесь, что адрес электронной почты, который вы используете на gitlab, является одним из адресов, подписанных на ваш аккаунт github. В противном случае вы увидите свое имя пользователя gitlab.

Ответ 2

Если у вас нет собственного GitLab, GitLab.com внедрил эту функцию напрямую, без каких-либо обходных решений.

  • В рамках проекта используйте значок шестеренки, чтобы выбрать Репозиторий зеркал
  • Прокрутите вниз до Нажмите в удаленный репозиторий
  • Checkmark Резервное хранилище удаленных зеркал: автоматически обновляет ветки удаленных зеркал, теги и каждый день фиксируется в этом репозитории.
  • Введите репозиторий, который вы хотите обновить; для GitHub вы можете указать свое имя пользователя и пароль в URL-адресе, например: https://yourgithubusername:[email protected]/agaric/guts_discuss_resource.git

Ответ 3

Для обработки WebHooks я использую веб-сервер synatra.

require 'sinatra'
post '/pew' do
  puts JSON.parse request.body.read
  # here can be placed signal code to run commit processing script
end

зарегистрировать webhook для push-событий (или других) до http://localhost:4567/pew внутри GitLab и с этого момента на каждом коммите gitlab будет отправлять информацию о фиксации на url.