php-webhook利用php脚本自动化部署git项目

注:本文已发布超过一年,请注意您所使用工具的相关版本是否适用

遇到权限的问题弄了好久,整理一下步骤简单的写一下
在阅读这篇文章的时候默认你的服务器上安装了 web 服务器和 git

step1

写一个简单的脚本查看你的服务器运行的账户,和是否能够运行相关函数

1
2
$test=shell_exec("whoami");
var_dump($test);//我的返回的是 www-data

如果这里返回 null 的话,不妨检查一下 shell_exec 函数是否被禁用了

step2

建立 ssh 公钥,以我的 www-data 账户为例子

1.先建立一个.ssh 目录并给予 www-data 用户权限

1
2
sudo mkdir /var/www/.ssh
sudo chown -R www-data:www-data /var/www/.ssh/

2.生成 webhook 部署公钥

1
sudo -Hu www-data ssh-keygen -t rsa //一直回车即可

如果你和我一样,遇到了-su: sudo: command not found,可以先安装sudo命令,apt-get install sudo,如果你和我还一样遇到了一些问题,不妨先试试apt-get update

3.将 webhook 部署公钥上传到托管网站

测试用的 Coding,其他还在测试当中

先查看公钥

1
sudo cat /var/www/.ssh/id_rsa.pub

然后复制上面的内容到托管网站,项目的 webhook 上面

step3

webhook 文件

step4

先在服务器上git clone

1
2
sudo chown -R www-data:www-data {代码地址}
sudo -Hu www-data git clone {你的项目ssh地址} {代码地址} --depth=1

注意,这里初始化 clone 必须要用 www-data 用户

step5

在托管网站上添加 webhook 地址,然后提交一次测试

感谢

参考了以下代码
https://gist.github.com/overtrue/0bf1cd704bf804de2e2c

关注我获取更新

wechat
知乎
github

猜你喜欢


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议,转载请注明出处,禁止全文转载