宝塔 WebHook 自动部署 GitLab / GitHub 代码
在宝塔面板配置 WebHook,用 SSH 密钥拉取 GitLab 或 GitHub 仓库,推送后自动执行 git pull 更新站点,实现代码一键部署。
使用密钥
#!/bin/bash
echo "----------------"
# 输出当前时间
date "+%Y-%m-%d %H:%M:%S"
echo "开始执行"
# 设置 SSH 密钥文件路径
sshKeyPath="~/.ssh/******" # SSH 密钥文件路径
# 获取Git分支名称
branch="main"
# 将Git项目存入宝塔路径
gitPath="/www/wwwroot/******"
# Git仓库地址
httpGit="git@gitlab.com:******/******.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:passwd@gitlab.com/******/******.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
评论