Github<>远程服务器,自动部署,webhook不起作用

时间:2015-06-14 17:51:30

标签: php github git-pull webhooks

当我从任何本地计算机推送到github项目时,我希望我的远程服务器自动拉(它是一个php网站项目)

我在google和youtube上搜索过,但是我花了一整天时间才发现这是怎么回事。

在我的http://xxx.xxx.xxx.xxx/website/中,有.git个文件夹和github.php文件部署

github.php

<?php
`git pull origin master`;
`touch test.txt`;

如果我从终端执行./github.php,那么&#34;脚本&#34;效果很好。拉动也有效。

如果我从浏览器输入网址http://xxx.xxx.xxx.xxx/website/github.php,则拉不起作用,但会创建test.txt

如果我从任何本地计算机推送提交,则远程服务器不会自动提取并且test.txt文件未创建;

在我的远程服务器中,权限为:

  • for .git目录:drwxrwxrwx 8 toji toji 4096 Jun 14 13:31(-R)

  • for github.php:-rwxrwxrwx 1 toji toji 51 Jun 14 13:28

在我的github帐户中,我添加了一个webhook服务: 有效载荷网址为:http://xxx.xxx.xxx.xxx/website/github.php

请帮我确定问题的根源。

1 个答案:

答案 0 :(得分:0)

我不认为你的PHP是有效的,因为你需要使用像exec()这样的东西来在php中使用git ...我几天前遇到了同样的问题,发现很少的工具来帮助从Github部署你的代码或者Gitlab所以我创建了Deepl.io来处理Web-Hooks并调用脚本来部署在你自己的服务器上。 这处理从github或gitlab发送的JSON,可用于多个存储库和分支等。您可以在收到拉取通知后使用自己的PHP或shell脚本,并在每次部署后向您发送状态电子邮件... 看看:http://deepl.io

实际执行的shell脚本(由php调用)如下所示;

#!/bin/sh

TRAGET="/path/to/target/folder"
LOG="/path/to/your/log/file.log"
NOW=$(date +"%Y-%m-%d-%H%M%S")

# Start Sctipt
echo "
SCRIPT START: $NOW" >> $LOG

cd $TRAGET >> $LOG

# checkout correct branch
git checkout master >> $LOG

# clear untracked files
git clean -df >> $LOG

# revert local changes
git checkout -- . >> $LOG

# pulling new stuff
git pull >> $LOG

echo "SCRIPT END.
" >> $LOG