使用宝塔WebHook实现将gitlab或github代码部署至宝塔网站

使用密钥

#!/bin/bash

echo "----------------"
# 输出当前时间
date "+%Y-%m-%d %H:%M:%S"
echo "开始执行"

# 设置 SSH 密钥文件路径
sshKeyPath="~/.ssh/******" # SSH 密钥文件路径

# 获取Git分支名称
branch="main"
# 将Git项目存入宝塔路径
gitPath="/www/wwwroot/******"
# Git仓库地址
httpGit="[email protected]:******/******.git"

# 使用 SSH 密钥进行身份验证
export GIT_SSH_COMMAND="ssh -i $sshKeyPath"

echo "Web站点路径:$gitPath"

if [ -d "$gitPath/.git" ]; then # 检查项目路径中是否存在 .git 目录

echo ".git 目录已存在,执行 git pull 更新代码..."

cd "$gitPath" || exit

sudo git fetch origin
sudo git reset --hard "origin/$branch"

echo "拉取最新更新到本地主干..."
sudo git pull

echo '设置权限...'
sudo chown -R www:www .

else

echo ".git 目录不存在,从远程仓库克隆代码..."
mkdir -p "$gitPath"
cd "$gitPath" || exit
git clone "$httpGit" .
echo '设置权限...'
sudo chown -R www:www .
if [[ $? != 0 ]]; then
exit
fi

fi

使用密码

#!/bin/bash

echo "----------------"
# 输出当前时间
date "+%Y-%m-%d %H:%M:%S"
echo "开始执行"

# Git分支名称
branch="main"
# Git项目路径
gitPath="/www/wwwroot/******"
# Git仓库地址
httpGit="https://username:[email protected]/******/******.git"

echo "Web站点路径:$gitPath"

if [ -d "$gitPath/.git" ]; then # 检查项目路径中是否存在 .git 目录
    
    echo ".git 目录已存在,执行 git pull 更新代码..."
    
    cd "$gitPath" || exit
    
    sudo git fetch origin 
    sudo git reset --hard "origin/$branch"
    
    echo "拉取最新更新到本地主干..."
    sudo git pull "$httpGit" "$branch"
    
    echo '设置权限...'
    sudo chown -R www:www .
    
else
    
    echo ".git 目录不存在,从远程仓库克隆代码..."
    mkdir -p "$gitPath"
    cd "$gitPath" || exit
    git clone "$httpGit" .
    echo '设置权限...'
    sudo chown -R www:www .
    if [[ $? != 0 ]]; then
        exit
    fi
    
fi