#!/bin/bash # 构建脚本,用于编译所有插件和 web_example.go # # 设置工作目录 WORK_DIR="/www/plugins" # # 设置 GOPATH 以确保使用相同版本的 plugins 包 # export GOPATH=$WORK_DIR export GO111MODULE=on # 确保输出目录存在 DIST_DIR="/www/plugins/example/dist" mkdir -p $DIST_DIR go mod tidy echo "===== 开始编译插件 =====" # 编译带有明确类型的日志插件 echo "编译日志插件 (明确类型)..." cd $WORK_DIR/plugins/logger go build -buildmode=plugin -o $DIST_DIR/logger.so if [ $? -eq 0 ]; then echo "日志插件编译成功!" else echo "日志插件编译失败!" exit 1 fi # 编译使用默认类型的日志插件 echo "编译默认日志插件 (默认类型)..." cd $WORK_DIR/plugins/defaultlogger go build -buildmode=plugin -o $DIST_DIR/defaultlogger.so if [ $? -eq 0 ]; then echo "默认日志插件编译成功!" else echo "默认日志插件编译失败!" exit 1 fi # 编译统计插件 echo "编译统计插件..." cd $WORK_DIR/plugins/stats go build -buildmode=plugin -o $DIST_DIR/stats.so if [ $? -eq 0 ]; then echo "统计插件编译成功!" else echo "统计插件编译失败!" exit 1 fi # 编译存储插件 echo "编译存储插件..." cd $WORK_DIR/plugins/storage go build -buildmode=plugin -o $DIST_DIR/storage.so if [ $? -eq 0 ]; then echo "存储插件编译成功!" else echo "存储插件编译失败!" exit 1 fi # 编译示例插件 echo "编译示例插件..." cd $WORK_DIR/plugins/demoutils go build -buildmode=plugin -o $DIST_DIR/demoutils.so if [ $? -eq 0 ]; then echo "示例插件编译成功!" else echo "示例插件编译失败!" exit 1 fi cd .. echo "===== 所有插件编译完成 =====" # 复制 web_admin.go 到工作目录 mkdir -p $WORK_DIR/example # 编译 web_admin.go echo "===== 编译 web_admin =====" cd $WORK_DIR/example go build -o /www/plugins/example/web_admin web_admin.go if [ $? -eq 0 ]; then echo "web_admin.go 编译成功!" else echo "web_admin.go 编译失败!" exit 1 fi echo "===== 所有编译完成 =====" echo "插件文件保存在 $DIST_DIR 目录中:" ls -la $DIST_DIR echo "web_admin 可执行文件保存在 /www/plugins/example/web_admin" echo "===== 启动web_admin =====" /www/plugins/example/web_admin