Gitlab:在创建新项目时自动将存储库克隆到其他位置



我试图用我的Gitlab安装程序实现的是,当管理员从Gitlab用户界面创建新项目时,它会自动将项目克隆到apache的根目录,用户可以在那里从浏览器工作和查看更改,而不是将项目克隆至本地系统并将其推送到apache根目录。

我喜欢在/var/www/html/

上自动克隆新创建的gitlab项目

您需要利用API和CI来做这类事情。所需的步骤如下:

  1. 创建一个在创建项目时触发的系统挂钩。

  2. 如果挂钩发生,请创建一个.gitlab-ci.yml文件,该文件定义Web服务器上的部署。

  3. 启用项目的运行程序,以便可以进行部署。

现在,每次对存储库进行推送时,都会将其部署到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"

最新更新