接收并处理GitLab Webhook事件,转换为企业微信通知。
创建Conda环境
conda env create -f environment.yml
激活环境
conda activate gitlab-webhook
运行应用
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
安装依赖
pip install -r requirements.txt
运行应用
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
构建Docker镜像
docker build -t gitlab-webhook -f docker/Dockerfile .
运行Docker容器
docker run -d -p 8000:8000 --name gitlab-webhook gitlab-webhook
docker compose -f docker/docker-compose.yml up -d
| 环境变量名 | 描述 | 默认值 |
|---|---|---|
host | 服务器主机地址 | 0.0.0.0 |
port | 服务器端口 | 8000 |
gitlab_webhook_secret | GitLab Webhook密钥,用于验证请求 | None |
wecom_webhook_url | 默认企业微信机器人Webhook URL | https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=your_wecom_key |
wecom_special_webhook_url | 特殊企业微信机器人Webhook URL(可选) | None |
wecom_special_events | 需要发送到特殊企业微信机器人的事件类型列表,使用逗号分隔 | [] |
支持的事件类型:push, tag_push, issue, note, merge_request, wiki_page, pipeline, build, deployment, feature_flag, release, emoji, token, group_member, subgroup | ||
log_level | 日志级别 | info |
log_file | 日志文件路径 | None |
可以创建.env文件来配置环境变量:
host=0.0.0.0 port=8000 gitlab_webhook_secret=your_secret_key wecom_webhook_url=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=your_wecom_key # 可选:配置特殊企业微信机器人 wecom_special_webhook_url=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=your_special_wecom_key # 可选:指定需要发送到特殊企业微信机器人的事件类型,使用逗号分隔 # 支持的事件类型:push, tag_push, issue, note, merge_request, wiki_page, pipeline, build, deployment, feature_flag, release, emoji, token, group_member, subgroup wecom_special_events=push,tag_push,release log_level=info log_file=logs/webhook.log
应用启动后,可以通过以下地址访问API文档:
可以通过以下端点进行健康检查:
GET /health
http://your-server-ip:8000/webhookgitlab_webhook_secret配置一致所有GitLab事件都会转换为企业微信markdown格式消息,包含以下信息:
gitlab-webhook/ ├── main.py # FastAPI应用入口 ├── requirements.txt # 依赖管理 ├── schemas.py # Pydantic模型定义 ├── handlers.py # 事件处理逻辑 ├── config.py # 配置管理 ├── __init__.py # 包初始化文件 ├── environment.yml # Conda环境配置 ├── docker/ # Docker配置 │ ├── Dockerfile # Docker构建文件 │ ├── docker-compose.yml # Docker Compose配置 │ └── entrypoint.sh # 容器启动脚本 └── README.md # 模块说明文档
应用默认输出日志到控制台,日志级别为info。可以通过配置log_file将日志输出到文件。
日志格式:
YYYY-MM-DD HH:MM:SS - logger_name - INFO - message
GitLab签名验证失败
gitlab_webhook_secret是否一致X-Gitlab-Token字段企业微信消息发送失败
应用启动失败
pip install -r requirements.txt
# 目前暂未添加测试
项目遵循PEP 8代码风格规范。
MIT License
欢迎提交Issue和Pull Request!