使用webHooks提交git后自动部署到服务器

  做项目时代码提交到git后总是在一个一个文件复制到服务器里,这样太麻烦,就看到码云的WebHooks自动部署到服务器,感觉这个还挺方便的,看下面教程

  第一步要配置服务器的git环境

配置git的姓名账号

  git config --global user.name "XXX"

  git config --global user.email "XXXX@XX"

为设置好Git用户创建SSHKey(XXX@XX是上面设置的邮箱)

  ssh-keygen -t rsa -C "XXX@XX"把生成的秘钥复制到git项目中去这样服务器git环境就搭建完成

  第一次要git clone ...项目到指定文件夹里

配置WebHooks

post.php代码

<?php
  header("Content-type: text/html; charset=utf-8");
  error_reporting(1);
  //需要自动部署的项目目录
  $dir = '/mnt/5poc.com/sc/git';
  //coding填写的令牌(在第六点配置,防止别人恶作剧)
  $token = 'ysw';
  $file="/mnt/5poc.com/sc/public/git/log.txt";
  $content = "写入的内容\n";
  $f = file_put_contents($file, $content.date('Y-m-d H:i:s').'成功进入',FILE_APPEND);
  //验证令牌
  $json = json_decode(file_get_contents('php://input'), true);
  if (empty($json['password']) || $json['password'] !== $token) {
  file_put_contents($file, $content.date('Y-m-d H:i:s').'进入失败'.file_get_contents('php://input'),FILE_APPEND);
  exit('error request');
  }
  file_put_contents($file, $content.'success',FILE_APPEND);
  //'2>&1'是让执行管道输出结果。
  echo shell_exec("cd $dir && git pull origin master 2>&1");
  ?>

  这样就基本完成,可以使用webhooks自动部署服务器了,本地只要git push服务器就会更新master分支的代码

评论 抢沙发