码云配置WebHooks

码云配置ssh

这一部分主要是服务器生成ssh key配置到码云,不需要拉代码时再输入用户名和密码,如果这部分已经弄好的朋友可以跳过。

生成ssh key

在linux服务器执行如下命令:

ssh-keygen -t rsa -C "这里输入自己的邮箱地址作为标识"

# 敲三个回车即可生成

cat ~/.ssh/id_rsa.pub

# 复制cat查看的公钥

码云配置公钥

登录码云->用户头像->设置->安全设置->SSH公钥->添加公钥

如果找不到也可以通过下面的链接直接一步到达:https://gitee.com/profile/sshkeys,当然你得先登录码云才可以

配置仓库以ssh链接拉取代码

git remote set-url origin ssh链接

添加WebHooks

注意这个操作是在某个仓库的界面

管理->管理->WebHooks->WebHooks管理->添加

添加一个自己服务器能访问的URL,设置一个密码,然后点击添加。

注意这里密码那不要选择签名密钥,目前我偿试使用PHP生成签名和码云服务器返回的签名对不上。

服务器脚本设置

在编写脚本之前我们还需要对服务器作一些设置,由于我外网访问我们URL时使用的不是root用户,我这里用的是www用户,因此需要给www用户可以sudo 执行git 的权限

编辑sudoers

vim /etc/sudoers
# 添加一行
www     ALL=NOPASSWD:/usr/local/git/bin/git
# 强制保存退出
!wq

上面一行的意思就是www用户可以无密码通过sudo以root权限执行git

编写脚本

以下是我写脚本,可以根据自己的需求修改

WebHooks.php


$password = '码云设置的密码';

if (empty($_SERVER['HTTP_X_GITEE_EVENT'])) {
    error(1);
}

if ($_SERVER['HTTP_X_GITEE_EVENT'] != 'Push Hook') {
    error(2);
}

if (empty($_SERVER['HTTP_X_GITEE_TOKEN'])) {
    error(3);
}

if ($_SERVER['HTTP_X_GITEE_TOKEN'] != $password) {
    error(4);
}

// 这里要把项目的目录修改成自己的项目目录,git改成自己的git地址
$res  = shell_exec("cd /项目目录 && sudo /usr/local/git/bin/git pull");
success($res);

function success($data) {
    echo json_encode([
        'code' => 0,
        'msg' => 'ok',
        'data' => $data,
    ]);
    exit;
}

function error($code) {
    echo json_encode([
        'code' => $code,
        'msg' => 'fail',
        'data' => '',
    ]);
    exit;
}

测试

可以先在码云添加WebHooks界面点击测试,或者直接上传代码测试一下。

你可能感兴趣的:(Linux)