当前位置: 首页 > 后端技术 > PHP

GitWebhook自动部署项目

时间:2023-03-30 05:18:24 PHP

为什么要用Webhook?只想自动拉取代码到测试服务器,不需要搭建、测试,简单就好。在网上搜了一下webhook的代码,有的同时使用了php和shell。觉得太复杂了,看不懂,就想自己写个简单的,能用就行。代码直接上代码//webhook-dev/index.php$token='XXX';//keyif(isset($_SERVER['HTTP_X_GITLAB_TOKEN'])&&$_SERVER['HTTP_X_GITLAB_TOKEN']!=$token){die('tokenisincorrect');}parse_str($_SERVER['QUERY_STRING'],$query);if(!isset($query['project'])){die('请指定项目');}$branch=isset($query['branch'])?$query['branch']:'dev';$command="cd../{$query['project']}&&gitpullorigin{$branch}";echoshell_exec($command);如何将Webhook作为一个单独的项目使用,可以通过参数拉取不同的项目、分支和标签。webhook-dev项目和其他项目指定pull项目和同级目录下的分支。查询参数如下:project项目名称branch分支或标签。dev默认通过nginx为webhook-dev单独配置域名或ip端口,eg:webhook.vm。com。如果想拉项目(目录名)为hello,分支为dev,那么链接是http(s)://webhook.vm.com?project=project1&branch=dev特别注意权限问题,因为web访问用户和用户组对于www,请确保www用户对拉取的项目中的.git目录具有权限。通过postman访问链接,在Headers中设置X-Gitlab-Token为自己的key,与代码一致。如果出现类似如下的git信息,则认为部署成功。更新abc123..abc123Fast-forwardREADME.md|2+-1filechanged,1insertion(+),1deletion(-)接下来进入gitlab项目下的Settings->Integrations页面,URL框填入刚才获取的链接,SecretToken填入其自己的钥匙。尝试在本地提交代码,你会发现已经通过Webhook自动拉取到测试服务器。使用Https的PSgit地址会要求输入密码,执行以下代码。然后手动从测试服务器拉取,输入密码后记录。然后就可以使用Webhook自动拉取了。gitconfig--globalcredential.helperstore