Hexo自动化部署
安装Git
apt install -y git |
安装Go
apt install -y golang |
安装Webhook
开源项目地址这里用此项目配合自定义shell脚本部署更方便go install github.com/adnanh/webhook@latest
配置服务器
创建项目目录,克隆项目mkdir -p 你的项目目录
cd 你的项目目录
git clone git://xxx.git
在同级目录新建hooks.json
和deploy.sh
编辑hooks.json文件
vim hooks.json[
{
"id": "自定义id名称",
"execute-command": "./deploy.sh",
"command-working-directory": "你的项目目录"
}
]
编辑deploy.sh文件
按自己的需求编辑deploy.sh文件并赋予脚本执行权限,这里编写好可以手动测试下脚本是否正常执行。vim deploy.sh
chmod +x deploy.sh
下面是我的脚本内容,仅供参考,使用了nvm版本,并事先在服务器提前安装好pnpm跟hexo-cli。
set -euo pipefail
export PATH="/root/.nvm/versions/node/v20.19.3/bin:$PATH"
COLOR_RESET="\033[0m"; COLOR_INFO="\033[1;34m"; COLOR_ERR="\033[1;31m"
log(){ local lvl=$1;shift; local c=$COLOR_INFO; [[ $lvl == ERROR ]]&&c=$COLOR_ERR
echo -e "$(date '+%F %T') ${c}[$lvl] $*${COLOR_RESET}"; }
deploy_project(){
local dir=$1 cmd=$2
log INFO "进入目录 → $dir"
pushd "$dir" >/dev/null || { log ERROR "目录不存在"; return 1; }
log INFO "更新代码 → git pull"
git pull --ff-only --quiet
log INFO "安装依赖 → pnpm install"
/root/.nvm/versions/node/v20.19.3/bin/pnpm install --silent
log INFO "执行构建 → $cmd"
if ! eval "$cmd"; then
log ERROR "构建失败"
popd >/dev/null
return 1
fi
popd >/dev/null
log INFO "✅ 部署完成!"
}
declare -A PROJECTS=(
["你的项目目录"]="hexo clean && hexo g"
)
for dir in "${!PROJECTS[@]}"; do
deploy_project "$dir" "${PROJECTS[$dir]}"
done
运行webhook服务
# 系统默认9000端口 可以用 -port 更改端口号 |
测试
GET http://ip:自定义端口 |
配置webhook触发
Github-要部署的项目-Settings选项-Webhooks,输入http://ip:自定义端口/hooks/自定义id名称即可