我试图用我的Gitlab安装程序实现的是,当管理员从Gitlab用户界面创建新项目时,它会自动将项目克隆到apache的根目录,用户可以在那里从浏览器工作和查看更改,而不是将项目克隆至本地系统并将其推送到apache根目录。
我喜欢在/var/www/html/
您需要利用API和CI来做这类事情。所需的步骤如下:
创建一个在创建项目时触发的系统挂钩。
如果挂钩发生,请创建一个
.gitlab-ci.yml
文件,该文件定义Web服务器上的部署。启用项目的运行程序,以便可以进行部署。
现在,每次对存储库进行推送时,都会将其部署到Web服务器上。
示例:
通过管理员界面Admin Area -> System Hooks
或使用curl
命令创建系统挂钩。单据
curl -X POST -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v3/hooks?url=https://gitlab.example.com/hook"
每当发生以下事件之一时,这将调用URL https://gitlab.example.com/hook
:
project_create, project_destroy, project_rename, project_transfer, user_add_to_team, user_remove_from_team, user_create, user_destroy, key_create, key_destroy, group_create, group_destroy, user_add_to_group, user_remove_from_group
现在,我们需要创建某种脚本,每当调用https://gitlab.example.com/hook
时都会运行该脚本。该脚本执行另一个curl
请求,该请求创建一个.gitlab-ci.yml文件,或者使用git自动创建第一个提交。单据
curl -X POST -H 'PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK' -F 'file_path=.gitlab-ci.yml' -F 'branch_name=master' -F 'commit_message=Initial' -F $'content=CI DEFINITION GOES HERE' 'https://gitlix.sw.jena.com/api/v3/projects/48/repository/files'
然后你需要为这个项目启用一个runner,以便它将它部署到你的Web服务器上。单据
curl -X POST -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v3/projects/9/runners" -F "runner_id=9"