# webhook **Repository Path**: whilesun/webhook ## Basic Information - **Project Name**: webhook - **Description**: webhook - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-03 - **Last Updated**: 2026-04-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Gitee Webhook 部署服务 支持 Gitee 多仓库的 Webhook 服务,使用 Podman 打包成独立二进制文件,在宿主机直接运行。 ## 方案优势 | 对比项 | 容器方案 | 本方案 | |--------|----------|--------| | 部署复杂度 | 需要挂载 socket、映射路径 | 直接运行二进制 | | 性能 | 有容器开销 | 原生性能 | | 安全性 | 需暴露 Docker socket | 无额外权限 | | 路径配置 | 容器内外路径映射复杂 | 直接使用宿主机路径 | ## 目录结构 ``` webhook/ ├── main.go # 主程序 ├── go.mod # Go 模块依赖 ├── config/ │ ├── config.yaml # 配置文件 │ └── config.yaml.example # 配置文件示例 ├── scripts/ │ ├── build.sh # 构建脚本 │ ├── deploy.sh # 部署启动脚本 │ ├── stop.sh # 停止服务脚本 │ └── logs.sh # 查看日志脚本 ├── README.md └── CLAUDE.md ``` ## 快速开始 ### 1. 环境要求 - Podman(用于构建) - Linux 宿主机(运行服务) ### 2. 构建二进制文件 ```bash scripts/build.sh ``` 构建完成后生成 `webhook-server` 二进制文件。 ### 3. 配置仓库 ```bash cp config/config.yaml.example config/config.yaml ``` 编辑 `config/config.yaml`: ```yaml server: port: "8080" log_file: "webhook.log" repositories: - name: "goods-manage" owner: "your-username" webhook_secret: "your-secret-key" deploy_dir: "/home/user/projects/goods-manage" branch: "main" commands: - "docker-compose pull" - "docker-compose up -d" ``` ### 4. 部署服务 ```bash scripts/deploy.sh ``` ### 5. 配置 Gitee Webhook 1. 进入 Gitee 仓库 → 设置 → WebHooks 2. 添加 WebHook: - **URL**: `http://your-server-ip:8080/webhook` - **密码**: 与 `webhook_secret` 一致 - **触发事件**: Push 事件 ## 配置说明 | 字段 | 必填 | 说明 | |------|------|------| | `server.port` | 否 | 服务端口,默认 8080 | | `server.log_file` | 否 | 日志文件路径 | | `repositories[].name` | 是 | 仓库名称 | | `repositories[].owner` | 是 | 仓库所有者 | | `repositories[].webhook_secret` | 是 | Webhook 密钥 | | `repositories[].deploy_dir` | 是 | 项目部署目录 | | `repositories[].branch` | 是 | 触发分支 | | `repositories[].commands` | 否 | 部署命令列表(默认:docker-compose pull && up -d) | | `repositories[].use_ssh` | 否 | 是否使用 SSH 方式克隆 | ## 常用命令 ```bash scripts/build.sh # 构建 scripts/deploy.sh # 部署/重启 scripts/stop.sh # 停止 scripts/logs.sh # 查看日志 ``` ## API 接口 | 接口 | 方法 | 说明 | |------|------|------| | `/webhook` | POST | Gitee webhook 接收 | | `/health` | GET | 健康检查 | | `/reload` | POST | 热重载配置 | ## 测试 ```bash curl http://localhost:8080/health curl -X POST http://localhost:8080/reload ``` ## 开机自启 (systemd) 创建 `/etc/systemd/system/gitee-webhook.service`: ```ini [Unit] Description=Gitee Webhook Service After=network.target docker.service [Service] Type=simple User=your-user WorkingDirectory=/path/to/webhook ExecStart=/path/to/webhook/webhook-server Restart=always [Install] WantedBy=multi-user.target ``` 启用服务: ```bash sudo systemctl daemon-reload sudo systemctl enable gitee-webhook sudo systemctl start gitee-webhook ``` ## 许可证 MIT