7.2 KiB
7.2 KiB
在线调试工作流使用示例
📖 简介
这个文档提供了如何使用 Gitea 新增的"在线调试工作流"功能的实际示例。该功能允许开发者快速验证和测试 GitHub Actions 工作流,而无需每次都推送到仓库。
🚀 快速开始
场景 1: 测试简单的 Hello World 工作流
场景描述:你想验证一个最基本的工作流是否能运行。
步骤:
- 打开仓库页面,进入 Actions → Debug Workflow
- 在编辑器中输入以下内容:
name: Hello World
on: workflow_dispatch
jobs:
hello:
runs-on: ubuntu-latest
steps:
- name: Say hello
run: echo "Hello, Gitea Actions!"
- name: Print date
run: date
- 点击 "Validate" 按钮验证语法
- 点击 "Run Debug Workflow" 执行
- 等待执行完成,查看日志输出
预期结果:
- 工作流状态显示为 "success"
- 日志中显示 "Hello, Gitea Actions!" 和当前日期
📋 场景 2: 调试构建脚本
场景描述:你有一个 Node.js 项目,需要测试 CI 构建流程。
步骤:
name: Build and Test
on: workflow_dispatch
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install dependencies
run: npm ci
- name: Run linter
run: npm run lint
- name: Build project
run: npm run build
- name: Run tests
run: npm test
预期输出:
Setting up Node.js 18...
npm ci completed
Running linter...
Building project...
Running tests...
🔧 场景 3: 使用工作流输入参数
场景描述:你想测试一个接受输入参数的工作流。
步骤:
- 在编辑器中输入:
name: Parameterized Workflow
on:
workflow_dispatch:
inputs:
environment:
description: 'Deployment environment'
required: true
default: 'staging'
type: choice
options:
- staging
- production
deploy_version:
description: 'Version to deploy'
required: true
default: 'latest'
- 编辑界面会显示输入字段(如果支持)
- 输入参数值并运行工作流
🐛 场景 4: 调试失败的工作流
场景描述:你需要快速测试修复后的工作流,而不需要推送代码。
步骤:
- 从失败的运行中复制工作流 YAML 内容
- 进行修改(例如修复脚本错误)
- 粘贴到调试编辑器
- 点击 "Run Debug Workflow" 验证修改
- 如果成功,推送代码更新
示例 - 修复前:
steps:
- run: npm run buld # ❌ 拼写错误
示例 - 修复后:
steps:
- run: npm run build # ✅ 正确拼写
📦 场景 5: 使用多个 Job 和依赖关系
场景描述:测试多个 Job 之间的依赖关系。
name: Multi-Job Workflow
on: workflow_dispatch
jobs:
prepare:
runs-on: ubuntu-latest
outputs:
build_id: ${{ steps.set-id.outputs.build_id }}
steps:
- name: Generate Build ID
id: set-id
run: echo "build_id=$(date +%s)" >> $GITHUB_OUTPUT
build:
runs-on: ubuntu-latest
needs: prepare
steps:
- name: Use Build ID
run: echo "Building with ID: ${{ needs.prepare.outputs.build_id }}"
deploy:
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy
run: echo "Deploying..."
验证点:
- Job 执行顺序正确
- Job 间的输出传递工作正常
🐳 场景 6: Docker 工作流
场景描述:测试构建和推送 Docker 镜像的工作流。
name: Docker Build and Push
on: workflow_dispatch
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build Docker image
run: |
docker build -t myapp:latest .
docker images
- name: Test container
run: |
docker run --rm myapp:latest echo "Container works!"
📝 场景 7: 环境变量和密钥测试
场景描述:虽然真实的密钥需要在仓库设置中配置,但你可以测试环境变量的使用。
name: Environment Variables
on: workflow_dispatch
env:
DEBUG_MODE: 'true'
APP_VERSION: '1.0.0'
jobs:
test:
runs-on: ubuntu-latest
env:
JOB_LEVEL_VAR: 'job-specific'
steps:
- name: Show environment
run: |
echo "DEBUG_MODE: $DEBUG_MODE"
echo "APP_VERSION: $APP_VERSION"
echo "JOB_LEVEL_VAR: $JOB_LEVEL_VAR"
💡 最佳实践
1. 从现有工作流开始
- 不要从头开始写工作流
- 复制已有的
.gitea/workflows/*.yml文件 - 进行小的修改并测试
2. 逐步构建复杂工作流
# 第一步:验证基础步骤
name: Step 1 - Basic
jobs:
test:
runs-on: ubuntu-latest
steps:
- run: echo "This works"
# 第二步:添加更多步骤
name: Step 2 - With Checkout
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: ls -la
3. 验证错误消息
- 如果工作流失败,查看完整的错误日志
- 错误消息通常会告诉你具体问题
- 利用 GitHub 的 Actions 文档改进工作流
4. 使用不同的分支测试
- 选择 "Select Branch" 下拉菜单
- 在不同分支上测试工作流
- 确保工作流对所有分支都有效
⚠️ 常见问题
Q1: 调试工作流中的密钥如何处理?
A: 调试工作流不能访问真实的仓库密钥,但你可以:
- 在本地测试脚本功能
- 使用硬编码的测试值
- 验证密钥使用的语法正确
Q2: 调试工作流会计入 Actions 配额吗?
A: 是的,调试工作流同样会使用 Actions 配额。
Q3: 能否在调试工作流中使用私有 Actions?
A: 可以,只要 Actions 在相同的仓库中或公开可用。
Q4: 调试工作流的输出保存多久?
A: 与普通工作流运行相同,默认保存 90 天。
📊 调试工作流 vs 正式工作流
| 特性 | 调试工作流 | 正式工作流 |
|---|---|---|
| 触发方式 | 手动(Web UI) | 事件触发 |
| 工作流ID | debug-workflow.yml | 实际文件名 |
| 标题前缀 | [DEBUG] | 无前缀 |
| 历史记录 | 保留 | 保留 |
| Actions 配额 | 计入 | 计入 |
| 环境变量 | 可用 | 可用 |
| 密钥访问 | ❌ 不可用 | ✅ 可用 |
| 权限检查 | ✅ 有 | ✅ 有 |
🔗 相关资源
📞 获取帮助
如果调试工作流运行出错: