Я буду создавать сервер gitlab в своей школе для размещения кода класса. Я хочу сделать так, чтобы каждый раз, когда любой пользователь нажимает на gitlab, он автоматически развертывал проект в /var/www/gitdeploy/<repo-user>/<repo>/<branch>
, таким образом, что http://<myServer>/gitdeploy/<repo-user>/<repo>/<branch>
доступен.
Желательно, чтобы он развернул все ветки, но, как минимум, мастер будет в порядке. Все это будет работать на одном сервере.
Я слышал о Gitlab CI, но не был уверен, что он подходит мне, и не понимал, как его настроить.
Как я мог это сделать?
РЕДАКТИРОВАТЬ: Кроме того, я думаю, я должен указать, что я хочу его для ВСЕХ пользователей, надеюсь, без моей настройки для каждого пользователя, ice globaly
Вы можете сделать это с помощью серверной ловушки git (например, post-receive
), который разворачивает ваш код. Однако Gitlab CI предназначен для этого, и вам следует рассмотреть возможность его использования.
Если вы выберете крючок, он будет сценарием оболочки в .git/hooks/post-receive/
. Для этого потребуются учетные данные для развертывания, и вам нужно будет написать их самостоятельно. Однако это один из вариантов использования хуков. Ознакомьтесь с документацией: https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
Также см. Документацию по gitlab: http://doc.gitlab.com/ce/hooks/custom_hooks.html
Я выяснил возможное решение, в установке «Омнибус», я считаю, что можно создать глобальный перехватчик, добавив некоторый рубиновый код в /opt/gitlab/embedded/service/gitlab-shell/hooks/post-receive
. Однако всякий раз, когда вы обновляете gitlab, этот хук будет возвращаться к версии пакета. Я бы посоветовал держать пакет в руках, чтобы этого не произошло.