Files
devstar/WORKFLOW_DEBUG_GUIDE.md
2025-11-20 21:12:51 +08:00

206 lines
4.9 KiB
Markdown
Raw Permalink 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.
# Gitea 工作流在线调试 - 快速使用指南
## 🎯 功能特点
-**在线编辑工作流** - 无需本地编辑后推送
-**灵活配置参数** - 设置分支、事件、输入、环境变量
-**实时日志查看** - 及时反馈执行结果
-**多调试会话** - 并发调试多个工作流
-**无缝集成** - 使用现有的 Runner 系统
## 📖 使用步骤
### 1. 进入工作流页面
打开仓库的 Actions 页面:
```
https://your-gitea-instance/repos/{owner}/{repo}/actions
```
### 2. 选择要调试的工作流
在左侧菜单中点击要调试的工作流文件(如 `deploy.yml`
### 3. 点击调试按钮
在筛选菜单右侧,会看到"Debug Workflow"按钮,点击进入调试页面
### 4. 配置调试环境
在调试页面的左侧面板配置:
#### 🔧 基础配置
- **Reference (分支/标签)** - 选择要在哪个分支/标签上执行
- **Event Type (事件类型)** - 选择触发事件类型
- `push` - 推送事件
- `pull_request` - PR 事件
- `workflow_dispatch` - 手动触发
- 其他...
#### 📝 工作流输入
如果工作流支持 `workflow_dispatch` 输入:
1. 点击"Add Input"按钮
2. 输入参数名称和值
3. 点击运行时会传递这些参数
示例:
```
Input Name: environment
Input Value: production
Input Name: version
Input Value: 1.0.0
```
#### 🔐 环境变量
添加自定义环境变量:
1. 点击"Add Environment"按钮
2. 输入环境变量名和值
3. 工作流执行时可以访问这些变量
示例:
```
ENV Name: DEBUG
ENV Value: true
ENV Name: LOG_LEVEL
ENV Value: debug
```
#### 📄 工作流内容
直接在编辑框中修改工作流 YAML 内容。支持修改:
- job 定义
- step 定义
- 条件表达式
- 其他任何工作流语法
### 5. 执行调试
点击"Run Workflow"按钮启动调试:
- 工作流会立即开始执行
- 状态面板会显示运行链接
### 6. 查看实时日志
在右侧面板查看:
- 📊 **执行日志** - 实时更新每2秒刷新
- 🔗 **运行链接** - 点击查看完整运行页面
- 📋 **复制日志** - 复制所有日志内容
## 💡 常见场景
### 场景 1: 调试部署脚本错误
1. 选择 `deploy.yml` 工作流
2. 点击调试
3. 修改部署步骤中有问题的命令
4. 在 ref 选择 `staging` 分支
5. 设置环境变量 `ENVIRONMENT=staging`
6. 运行调试
7. 查看日志找出问题
8. 修改代码并重新测试
### 场景 2: 测试新的工作流输入
1. 编辑 `test.yml` 工作流
2. 点击调试
3. 添加测试输入参数:
- `test_level: smoke`
- `parallel: true`
4. 运行调试
5. 验证输入是否正确传递
### 场景 3: 验证不同环境下的行为
1. 调试工作流
2. 分别设置环境变量:
- 第一次:`ENV=dev`
- 第二次:`ENV=staging`
- 第三次:`ENV=production`
3. 对比三次运行的日志
4. 确保各环境行为正确
## ⚠️ 注意事项
### 权限要求
- 需要对仓库有 **Actions 写入权限**
- 只有仓库管理员可以创建调试会话
### 会话管理
- 每个调试会话会自动保存编辑的工作流内容
- 调试会话 24 小时后自动过期并清理
- 可以创建多个调试会话,互不影响
### 工作流执行
- 调试使用的是真实的 Runner和正常运行一样
- 如果工作流有副作用(如部署、数据库操作),请谨慎
- 建议在测试分支上进行调试
### 日志显示
- 日志实时更新,可能有 1-2 秒延迟
- 日志存储有保留期,超期会被清理
- 如需保存日志,请及时复制
## 🔍 调试技巧
### 技巧 1: 分步验证
```yaml
jobs:
debug:
runs-on: ubuntu-latest
steps:
- name: Print environment
run: |
echo "Branch: ${{ github.ref }}"
echo "Event: ${{ github.event_name }}"
echo "DEBUG is: $DEBUG"
```
### 技巧 2: 添加详细日志
```yaml
steps:
- name: Run with debug output
run: |
set -x # Print each command
my-command --verbose
```
### 技巧 3: 条件调试
在工作流中添加调试步骤,使用条件控制:
```yaml
- name: Debug output
if: env.DEBUG == 'true'
run: |
# 调试命令
env
pwd
ls -la
```
## 📞 获取帮助
如遇到问题:
1. **检查权限** - 确保你有 Actions 写入权限
2. **查看日志** - 详细的日志通常能指出问题
3. **简化工作流** - 从最简单的步骤开始测试
4. **查看文档** - Gitea Actions 官方文档和 GitHub Actions 文档
## 🚀 最佳实践
**推荐做法**
- 在非生产分支上调试
- 先用 echo 验证变量和路径
- 逐步扩展工作流复杂度
- 保存成功的工作流配置
**避免做法**
- 不要在生产分支上运行有风险的调试
- 不要频繁修改无关工作流
- 不要忽视失败的调试运行
- 不要保留临时的调试代码在最终版本
---
**提示**: 该调试功能专为开发者设计,可以大幅加快 CI/CD 流程的故障排查和优化。充分利用它可以显著提高开发效率!