2015-06-14 83 views
0

当我推到GitHub的项目从任何地方的计算机,我希望我的远程服务器自动拉(它是一个PHP的网站项目)Github上<>远程服务器,自动部署,网络挂接不工作

我已经搜索谷歌和YouTube,但花了整整一天,我没有找到如何做到这一点。

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

github.php

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

如果我从终端执行./github.php, “脚本” 效果很好。拉动也起作用。

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

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

以我远程服务器,该权限是:

  • 为.git目录:drwxrwxrwx 8冬治冬治4096年06月14 13点31分(-R)

  • 为github.php: - rwxrwxrwx 1东寺东寺51年06月14日13:28

在我github上的帐户,我添加了一个网络挂接服务: 有效载荷网址是:http://xxx.xxx.xxx.xxx/website/github.php

请帮我确定我的问题的由来。

回答

0

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

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

#!/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 
相关问题