利用 WebHook 实现 Git 代码自动部署

前提:

  1. 本文基于LNMP PHP代码自动部署;
  2. 必须使用www用户;
  3. 本文Git平台为 腾讯工蜂;

操作步骤:

  1. 目标服务器切www用户:

su www
切换用户(www)时:this account is currently not available
cat /etc/passwd | grep www # 查看是否为 /sbin/nolgin
解决办法:
vim /etc/passwd
修改 /sbin/nolgin/bin/bash

  1. 在目标服务器上生成 ssh 公钥,生成公钥在 /home/www/.ssh 文件夹下:

ssh-keygen -t rsa -C "your_name"
利用 WebHook 实现 Git 代码自动部署_第1张图片

  1. 部署公钥至Git平台:

公钥位置:/home/www/.ssh/id_rsa.pub
在工蜂平台新增SSH公钥:工蜂平台 -> 个人设置 -> SSH密钥 -> 添加SSH密钥, 复制粘贴 id_rsa.pub 中内容;
利用 WebHook 实现 Git 代码自动部署_第2张图片

  1. 使用 www 用户 git clone 代码。

需要使用 SSH 地址 [email protected]:someaccount/someproject.git,若之前是使用 https 地址更新,则使用以下命令切换至 SSH 地址:
git remote set-url origin [email protected]:someaccount/someproject.git
针对非www用户已部署代码,可修改其用户权限至 www:
chown -R www:www code_folder

  1. 安装 githook.php 文件至外网可以访问的位置,如 http://test.com/githook.php
 0) {
    /* if master branch*/
    fwrite($fs, 'BRANCH: ' . print_r($branch, true) . PHP_EOL);
    fwrite($fs, '=======================================================================' . PHP_EOL);

    /* then pull master */
    // $result = shell_exec("cd {$project} && git pull 2>&1");
    $result = shell_exec("cd {$project} && git pull 2>&1");

    fwrite($fs, 'RESULT: ' . print_r($result, true) . PHP_EOL);
    fwrite($fs, '===================================end====================================' . PHP_EOL);
    $fs and fclose($fs);
}
  1. 在工蜂平台添加 hook,注意秘密令牌需要与 githook.php 文件中的 token 一至

位置:项目 -> 设置 -> 高级设置 -> 网络回调勾子
利用 WebHook 实现 Git 代码自动部署_第3张图片

  1. 部署完成,当 git 有 push 更新时,目标服务器端将自动拉取;

你可能感兴趣的:(webhooks,git,自动部署)