导航:首页 > 编程语言 > webhooksphp

webhooksphp

发布时间:2023-11-17 15:30:00

⑴ 如何利用git webhooks 实现网站代码自动化部署

1. 生成公钥

公钥有两个:1. git用户公钥,2. 部署公钥:

git用户公钥

ssh-keygen -t rsa -C "[email protected]"
# 然后一直回车就行
# 生成的文件通常是 /root/.ssh/id_rsa,如果非root用户请查看提示上的路径

1
2
3

ssh-keygen -t rsa -C "[email protected]"
# 然后一直回车就行
# 生成的文件通常是 /root/.ssh/id_rsa,如果非root用户请查看提示上的路径

部署公钥

sudo -Hu www ssh-keygen -t rsa # 请选择 “no passphrase”,一直回车下去

2. 准备钩子文件

创建和修改目录权限:

mkdir /home/wwwroot/website.com/hook
chown -R www:www /home/wwwroot/website.com/hook

1
2

mkdir /home/wwwroot/website.com/hook
chown -R www:www /home/wwwroot/website.com/hook

写入钩子文件:

sudo -Hu www touch /home/wwwroot/website.com/hook/index.php

1

sudo -Hu www touch /home/wwwroot/website.com/hook/index.php

<?php

error_reporting(1);

$target = '/home/wwwroot/website.com'; // 生产环境web目录

$token = '您在coding填写的hook令牌';
$wwwUser = 'www';
$wwwGroup = 'www';

$json = json_decode(file_get_contents('php://input'), true);

if (empty($json['token']) || $json['token'] !== $token) {
exit('error request');
}

$repo = $json['repository']['name'];

// $cmds = array(
// "cd $target && git pull",
// "chown -R {$wwwUser}:{$wwwGroup} $target/",
// );

// foreach ($cmds as $cmd) {
// shell_exec($cmd);
// }

// 感谢@墨迹凡指正,可以直接用www用户拉取代码而不用每次拉取后再修改用户组

$cmd = "sudo -Hu www cd $target && git pull";

shell_exec($cmd);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

<?php

error_reporting(1);

$target = '/home/wwwroot/website.com'; // 生产环境web目录

$token = '您在coding填写的hook令牌';
$wwwUser = 'www';
$wwwGroup = 'www';

$json = json_decode(file_get_contents('php://input'), true);

if (empty($json['token']) || $json['token'] !== $token) {
exit('error request');
}

$repo = $json['repository']['name'];

// $cmds = array(
// "cd $target && git pull",
// "chown -R {$wwwUser}:{$wwwGroup} $target/",
// );

// foreach ($cmds as $cmd) {
// shell_exec($cmd);
// }

// 感谢@墨迹凡指正,可以直接用www用户拉取代码而不用每次拉取后再修改用户组

$cmd = "sudo -Hu www cd $target && git pull";

shell_exec($cmd);

确保你的hook文件可以访问:http://example.com/hook/index.php,钩子准备完成。

3.修改git配置和保存git用户名密码

sudo -Hu www git config --global credential.helper store # 永久保存
sudo -Hu www git config --global user.name "Bantes"
sudo -Hu www git config --global user.email "[email protected]" # 邮箱请与conding上一致

1
2
3

sudo -Hu www git config --global credential.helper store # 永久保存
sudo -Hu www git config --global user.name "Bantes"
sudo -Hu www git config --global user.email "[email protected]" # 邮箱请与conding上一致

在Coding网站

1.添加用户公钥

复制/root/.ssh/id_rsa.pub内容到个人设置页的SSH公钥里添加即可(https://coding.net/user/account/setting/keys)

2.添加部署公钥

复制/home/www/.ssh/id_rsa.pub的内容并添加到部署公钥:

选择项目 > 设置 > 部署公钥 > 新建 > 粘贴到下面框并确认

3.添加hook

选择项目 > 设置 > WebHook > 新建hook > 粘贴你的hook/index.php所在的网址。比如:http://example.com/hook/index.php, 令牌可选,但是建议写上。

稍过几秒刷新页面查看hook状态,显示为绿色勾就OK了。

初始化

1.我们需要先在服务器上clone一次,以后都可以实现自动部署了:

sudo -Hu www git clone https://git.coding.net/yourname/yourgit.git /home/wwwroot/website.com/ --depth=1

1

sudo -Hu www git clone https://git.coding.net/yourname/yourgit.git /home/wwwroot/website.com/ --depth=1

这个时候应该会要求你输入一次Coding的帐号和密码,因为上面我们设置了永久保存用户名和密码,所以之后再执行git就不会要求输入用户名和密码了。

**!!注意,这里初始化clone必须要用www用户**

2.往Coding.net提交一次代码测试:

在本地clone的仓库执行:

git commit -am "test hook" --allow-empty
git push

1
2

git commit -am "test hook" --allow-empty
git push

OK,稍过几秒,正常的话你在配置的项目目录里就会有你的项目文件了。

初始化Laravel框架

1. 下载Composer

在项目目录下执行:

sudo -Hu www curl -sS https://getcomposer.org/installer | php
sudo -Hu www php composer.phar install

1
2

sudo -Hu www curl -sS https://getcomposer.org/installer | php
sudo -Hu www php composer.phar install

**!!记得在本地提交的时候在.gitignore中加上composer.phar**

阅读全文

与webhooksphp相关的资料

热点内容
nat地址访问外网服务器 浏览:966
怎样用java编译一个心形 浏览:934
如何使用python中的pygame 浏览:836
python实用小工具 浏览:24
怎么在安卓手机上去除马赛克 浏览:235
农行浓情通app怎么下载 浏览:533
怎么把原文件夹找回来 浏览:535
俄罗斯方块实现python思路 浏览:735
汉语拼音英语编译代码 浏览:501
程序员应具备的能力 浏览:606
手机石墨文档文件夹访问权限 浏览:656
客户端如何登陆域文件服务器 浏览:530
两位数的平方计算法 浏览:930
android图片分块 浏览:715
图形平移命令 浏览:962
聚类算法JAVA代码 浏览:407
网站图标素材压缩包 浏览:892
娱乐化app怎么做 浏览:639
加密货币行业前景如何 浏览:575
arm查询法的局限性和编译流程 浏览:81