git推送宝塔面板指南

1 推送简介

我们每次git提交代码的时候,服务器网站获取最新git代码,特别是如果你管理几十个网站代码,都需要登录服务器,手动拉取下代码,这样非常繁琐,如果我们用一套代码,不同服务器环境拉取的话,甚至需要手动改里面的比如数据库配置,所以我们需要用宝塔webhook来实现,推送代码的时候即可实现服务器自动拉取。

2 宝塔安装webhook


3 webhook添加脚本


在webhook里面添加一个钩子
执行脚本如下,有两处须要批改

gitPath="/www/wwwroot/$1"(留神你的阿里云文件门路,如果不一样须要批改)
gitHttp="https://gitee.com/yourname/$1.git"(留神你的近程仓库地址,肯定要改)
.env.test这个根据环境改成对应的,比如正式环境改成.env.www,具体请看下面的文章解说

#!/bin/bash
echo ""
#输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "Start"
#判断宝塔WebHook参数是否存在
if [ ! -n "$1" ];
then javascript:;
echo "param参数错误"
echo "End"
exit
fi
#git项目路径($1是param后面的参数,指向你的服务器的目录)
gitPath="/www/wwwroot/$1"
#git 网址 (替换成你的git地址,可选择https方式或者ssh方式)
gitHttp="https://gitee.com/yourname/$1.git"

echo "Web站点路径:$gitPath"

#判断项目路径是否存在
if [ -d "$gitPath" ]; then
cd $gitPath
#判断是否存在git目录
if [ ! -d ".git" ]; then
echo "在该目录下克隆 git"
sudo git clone $gitHttp gittemp
echo "切换develop分支"
sudo git checkout develop
echo "移动+删除文件夹"
sudo mv gittemp/* .
sudo mv gittemp/.[^.]* .
sudo rm -rf gittemp
else
echo "切换develop分支"
sudo git checkout develop
echo "更新文件"
sudo git checkout .
sudo git pull origin develop
sudo git fetch -p
fi
echo "配置文件"
sudo cp .env.test .env
echo "设置目录权限"
sudo chown -R www:www $gitPath
echo "End"
exit
else
echo "创建目录"
sudo mkdir $gitPath
cd $gitPath
echo "在该目录下克隆 git"
sudo git clone $gitHttp gittemp
echo "切换develop分支"
sudo git checkout develop
echo "移动+删除文件夹"
sudo mv gittemp/* .
sudo mv gittemp/.[^.]* .
sudo rm -rf gittemp
echo "配置文件"
sudo cp .env.test .env
echo "设置目录权限"
sudo chown -R www:www $gitPath
echo "End"
exit
fi

ps:哪一步走不通就去echo看看日志,或者去相应目录下手动执行相关命令,看看手动行不行,不行就解决错误。

4 代码中的.env解说

传统正式环境和测试环境比如数据库配置不一样,可能我们需要两套配置
像以上代码有测试配置文件.env.test,推送后会自动复制为.env,正式环境钩子代码自行修改下改成.env.www
这样的好处不管是否正式或者测试环境,只需要配置多个.env,这样代码不需要任何修改即可运行正式或测试环境


从图片上面可以看到代码有很多不同env配置,它是对应不同环境,你只需要钩子代码里面修改.env.test

5 查看密钥

添加好钩子后,点击查看密钥


复制上面的网址,其中param参数需要改成相对wwwroot的网站路径,比如param=www.demo.com

6 配置git平台的webhook

码云、github、阿里云云效等webhook配置,基本设置都差不多,以下为云效配置,其他平台参考下



相关推荐

  • 获取指定目录下的所有图片信息

    1 获取指定目录下的所有图片信息// 获取指定目录下的所有图片信息 public function getImagesInfo($directory) { $images = []; // 创建递归目录迭代器 $iterator = new \RecursiveIteratorIterator( new \RecursiveDirectoryIterator($directory, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::LEAVES_ONLY ); // 遍历目录中的每个文件 foreach (

  • Thinkphp各版本的PHP要求

    ThinkPHP 8.0:运行环境要求PHP8.0+,兼容PHP8.3ThinkPHP 6.1:运行环境要求PHP7.2+,兼容PHP8.1ThinkPHP 6.0:运行环境要求PHP7.2+,兼容PHP8.1ThinkPHP 5.1:运行环境要求PHP5.6+,兼容PHP8.0ThinkPHP 5.0:运行环境要求PHP5.4+,兼容PHP7.3

  • Thinkphp5.1路径常量

    1 配置文件位置根目录/config/template.php2 配置文件内容<?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reser

  • Thinkphp5.0路径常量

    1 配置文件位置根目录/application/模块名/config.php2 配置文件内容<?php//配置文件return [ // 后台视图输出字符串内容替换 'view_replace_str' => [ '__PUBLIC__' => '/', '__STATIC__' => '/static', '__CONSOLE__' => '/static/console', '__CONSOLE_CSS__' => '/static/console/css', '__CONSOLE_IMAGES__' => '/static/console/ima

  • wp站点防止别人进行DDOS攻击

    1 简介wp站点防止别人进行DDOS攻击。2 配置位置位置:根目录/wp-config.php3 配置内容在【根目录/wp-config.php】文件的开头添加如下代码:if(strpos($_SERVER['REQUEST_URI'], 'xmlrpc.php') !== false){ $protocol = $_SERVER['SERVER_PROTOCOL'] ?? ''; if(!in_array($protocol, ['HTTP/1.1', 'HTTP/2', 'HTTP/2.0', 'HTTP/3'], true)){ $protocol = 'HTTP/1.0'; } hea

  • 只读属性

    1 只读属性简介只读属性的声明方式类似于普通属性,但需要使用 readonly 关键字。2 只读属性例子class Point { public readonly float $x; public readonly float $y; public function __construct(float $x, float $y) { $this->x = $x; $this->y = $y; }}$point = new Point(3.5, 2.8);echo $point->x; // 输出: 3.5echo $point->y; // 输出: 2.8// 下面的尝