Files
novalon-website/woodpecker-debug-guide.md
T
张翔 dd2a0999bb
ci/woodpecker/push/woodpecker Pipeline failed
fix: 修复企业微信通知环境变量展开问题
- 使用 PAYLOAD=$(cat <<ENDPAYLOAD) 替代 cat > file <<EOF
- 确保环境变量在 heredoc 中正确展开
- 添加测试脚本验证环境变量展开
- 修复构建详情链接和消息内容缺失问题
2026-03-28 22:48:22 +08:00

259 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Woodpecker CI 自动触发问题诊断指南
## 🔍 问题现象
- ✅ Git Webhook 推送成功
- ✅ 手动触发 CI 可以工作
- ❌ 推送代码后 CI 不会自动触发
- ❌ Woodpecker CI 设置中 "批准要求" 已改为 "无"
---
## 📝 需要在生产环境执行的命令
### 1. 查看 Woodpecker CI 日志
```bash
# SSH 到 Woodpecker CI 服务器
ssh user@139.155.109.62
# 查看 Woodpecker 容器日志
docker logs woodpecker-server --tail 100
# 查看 Webhook 相关日志
docker logs woodpecker-server --tail 200 2>&1 | grep -i "webhook"
# 查看仓库相关日志
docker logs woodpecker-server --tail 200 2>&1 | grep -i "novalon-website"
# 查看错误日志
docker logs woodpecker-server --tail 200 2>&1 | grep -iE "(error|fail|warn)"
```
### 2. 检查 Woodpecker CI 环境变量
```bash
# 查看 Woodpecker 环境变量
docker exec woodpecker-server env | grep WOODPECKER
# 关键环境变量检查
WOODPECKER_HOST # 应该设置为服务器地址
WOODPECKER_WEBHOOK_HOST # Webhook 地址
WOODPECKER_OPEN # 是否开放访问
WOODPECKER_DEFAULT_PIPELINE # 默认 Pipeline 配置
```
### 3. 检查 Webhook 接收情况
```bash
# 实时查看日志
docker logs woodpecker-server -f
# 然后推送代码,观察日志输出
```
---
## 🔧 常见问题及解决方案
### 问题 1: Webhook 地址配置错误
**症状**: Webhook 发送成功,但 Woodpecker 没有响应
**检查**:
```bash
# 检查 WOODPECKER_HOST
docker exec woodpecker-server env | grep WOODPECKER_HOST
# 应该返回类似:
# WOODPECKER_HOST=https://ci.f.novalon.cn
```
**解决**:
```bash
# 修改环境变量
docker stop woodpecker-server
docker rm woodpecker-server
# 重新启动,设置正确的 HOST
docker run -d \
--name=woodpecker-server \
-e WOODPECKER_HOST=https://ci.f.novalon.cn \
-e WOODPECKER_WEBHOOK_HOST=https://ci.f.novalon.cn \
# ... 其他配置
woodpeckerci/woodpecker-server:latest
```
---
### 问题 2: Webhook Secret 不匹配
**症状**: Webhook 返回 401 Unauthorized
**检查**:
```bash
# 检查 Git Webhook 的 Secret
curl -X POST \
-H "Content-Type: application/json" \
-H "X-GitHub-Event: push" \
# ... 其他 headers \
http://your-woodpecker-server/hook
```
**解决**:
1. 在 Woodpecker CI 中设置 `WOODPECKER_WEBHOOK_SECRET`
2. 在 Git Webhook 中配置相同的 Secret
---
### 问题 3: 仓库未正确同步
**症状**: Woodpecker 日志显示 "repository not found"
**检查**:
```bash
# 检查仓库是否在 Woodpecker 中正确注册
docker exec woodpecker-server sqlite3 /var/lib/woodpecker/woodpecker.sqlite \
"SELECT * FROM repos WHERE repo_full_name = 'novalon/novalon-website';"
```
**解决**:
1. 在 Woodpecker CI Web 界面中删除仓库
2. 重新同步仓库
3. 重新激活仓库
---
### 问题 4: 分支过滤配置问题
**症状**: Webhook 接收成功,但 Pipeline 未创建
**检查**:
```bash
# 查看 Woodpecker 日志中关于分支的日志
docker logs woodpecker-server --tail 200 2>&1 | grep -i "branch"
```
**可能的原因**:
- Woodpecker 全局配置中限制了某些分支
- 仓库设置中的分支保护
**解决**:
1. 检查 Woodpecker 全局配置
2. 检查仓库设置中的分支过滤
---
### 问题 5: 数据库问题
**症状**: Woodpecker 日志显示数据库错误
**检查**:
```bash
# 检查数据库连接
docker logs woodpecker-server 2>&1 | grep -i "database\|sqlite\|mysql\|postgres"
```
**解决**:
1. 检查数据库服务是否运行
2. 检查数据库连接配置
3. 检查数据库权限
---
## 🧪 测试 Webhook 接收
在 Woodpecker CI 服务器上执行:
```bash
# 1. 启动日志监控
docker logs woodpecker-server -f &
# 2. 在另一个终端推送代码
# git push origin release/v1.0.0
# 3. 观察日志输出
# 应该看到类似:
# "received webhook from gitea"
# "found repository novalon/novalon-website"
# "creating pipeline for push event"
```
---
## 📊 诊断清单
请提供以下信息:
### 1. Woodpecker CI 日志输出
```bash
docker logs woodpecker-server --tail 100 > /tmp/woodpecker-logs.txt
cat /tmp/woodpecker-logs.txt
```
### 2. Webhook 推送详情
在 Git 仓库的 Webhook 设置中:
- 点击最新的推送记录
- 查看 Request Body
- 查看 Response Body
- 查看 HTTP Status Code
### 3. Woodpecker CI 环境变量
```bash
docker exec woodpecker-server env | grep WOODPECKER > /tmp/woodpecker-env.txt
cat /tmp/woodpecker-env.txt
```
---
## 🎯 快速修复方案
如果日志查看困难,可以尝试以下方案:
### 方案 A: 重启 Woodpecker CI
```bash
docker restart woodpecker-server
docker restart woodpecker-agent
```
### 方案 B: 重新同步仓库
1. 在 Woodpecker CI Web 界面中删除 `novalon/novalon-website` 仓库
2. 在设置中重新同步仓库列表
3. 重新激活仓库
4. 重新配置仓库设置(批准要求改为 "无"
### 方案 C: 使用 API 触发(备选方案)
如果自动触发始终无法工作,可以使用 API 手动触发:
```bash
# 获取 Woodpecker Token
# 在 Woodpecker CI 用户设置中生成
# 使用 API 触发 Pipeline
curl -X POST \
"https://ci.f.novalon.cn/api/repos/novalon/novalon-website/pipelines" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"branch": "release/v1.0.0",
"event": "push"
}'
```
---
## 📞 联系支持
如果以上方法都无法解决问题:
1. 收集所有日志和配置信息
2. 访问 Woodpecker CI GitHub Issues: https://github.com/woodpecker-ci/woodpecker/issues
3. 提供详细的错误信息和环境配置
---
**最后更新**: 2026-03-28