当前位置:   article > 正文

#Gitee 的 WebHooks 实现代码自动化部署#_gitee自动部署到web线上环境

gitee自动部署到web线上环境

1:安装git
2:php同步脚本
3:配置webhook

一:安装git服务

  1. // 查看是否安装了git
  2. git --version
  3. // 如果未安装,执行安装命令
  4. yum install git

2:编写同步PHP脚本

  1. <?php
  2. //理发店钩子
  3. error_reporting(1);
  4. set_time_limit(0);
  5. // 部署目录
  6. $target = '/www/wwwroot/haircutapp';
  7. // 部署密钥
  8. $password = '123456';
  9. // 部署分支
  10. $branch = 'master';
  11. // git 地址
  12. $giturl = "https://gitee.com/xxx/xxss.git";
  13. if(!file_exists($target)){
  14. // 如果目录不存在 就clone 一个
  15. $basedir = dirname($target) ;
  16. $cmd = "(cd $basedir && git clone $giturl ) 2>&1 ";
  17. shell_exec($cmd);
  18. chmod($target,0777) ;
  19. }
  20. // token判断
  21. // 分支判断
  22. $arr = file_get_contents('php://input', 'r');
  23. $arr = json_decode($arr, true);
  24. if (JSON_ERROR_NONE !== json_last_error()) {
  25. die("解析json失败");
  26. }
  27. // 验证提交密码是否正确
  28. if (!isset($arr['password']) || $arr['password'] !== $password) {
  29. echo '密码错误';
  30. exit(0);
  31. }
  32. $ref = isset($arr['ref']) ? $arr['ref'] : die("没有分支信息");
  33. $ref = explode('/', $ref);
  34. $ref = array_pop($ref);
  35. if ($branch != $ref) {
  36. die("同步失败:不是分支" . $branch);
  37. }
  38. $cmd = "(cd $target && git pull ) 2>&1 ";
  39. echo shell_exec($cmd);
  40. $res_log = "---------------------------------------------------------------" . PHP_EOL;
  41. $res_log .= PHP_EOL . "pull start ---------------------------------------------" . PHP_EOL;
  42. $res_log .= '------------------------------------------------------------' . PHP_EOL;
  43. $res_log .= '-----------当前时区:' . date_default_timezone_get();
  44. $res_log .= $arr['user_name'] . ' 在' . date('Y-m-d H:i:s') . '向' . $arr['repository']['name'] . '项目的' . $arr['ref'] . '分支push了' . $arr['total_commits_count'] . '个commit:';
  45. $res_log .= '------------------------------------------------------------' . PHP_EOL;
  46. $res_log .= "pull end -----------------------------------------------------" . PHP_EOL;
  47. file_put_contents("/www/wwwroot/webhook.yanghaifeng.top/logs/" . date('Y-m-d', time()) . ".txt", $res_log, FILE_APPEND);//写入日志到log文件中
  48. echo '很棒:'.date('y-m-d H:i:s');
  49. ?>

3:如果使用公钥方式,需要配置一下公钥

  • 配置公钥
  • 首先查看服务器上是否已经存在公钥 id_rsa.pub 文件
  • 如果存在,直接复制里面的内容,如果不存在,先生成
  1. // 查看是否由公钥文件
  2. ll ~/.ssh/
  3. // 如果存在公钥,则执行
  4. cat ~/.ssh/id_rsa.pub
  5. // 如果不存在,则重新生成
  6. ssh-keygen -t rsa

4:如果使用密码的方式,需要再码云后端设置一下密码就可以了

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/488126
推荐阅读
相关标签
  

闽ICP备14008679号