Files
devstar/docs/DEBUG_WORKFLOW_EXAMPLES.md
2025-11-19 09:08:04 +08:00

7.2 KiB
Raw Permalink Blame History

在线调试工作流使用示例

📖 简介

这个文档提供了如何使用 Gitea 新增的"在线调试工作流"功能的实际示例。该功能允许开发者快速验证和测试 GitHub Actions 工作流,而无需每次都推送到仓库。

🚀 快速开始

场景 1: 测试简单的 Hello World 工作流

场景描述:你想验证一个最基本的工作流是否能运行。

步骤

  1. 打开仓库页面,进入 ActionsDebug Workflow
  2. 在编辑器中输入以下内容:
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
  1. 点击 "Validate" 按钮验证语法
  2. 点击 "Run Debug Workflow" 执行
  3. 等待执行完成,查看日志输出

预期结果

  • 工作流状态显示为 "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: 使用工作流输入参数

场景描述:你想测试一个接受输入参数的工作流。

步骤

  1. 在编辑器中输入:
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'
  1. 编辑界面会显示输入字段(如果支持)
  2. 输入参数值并运行工作流

🐛 场景 4: 调试失败的工作流

场景描述:你需要快速测试修复后的工作流,而不需要推送代码。

步骤

  1. 从失败的运行中复制工作流 YAML 内容
  2. 进行修改(例如修复脚本错误)
  3. 粘贴到调试编辑器
  4. 点击 "Run Debug Workflow" 验证修改
  5. 如果成功,推送代码更新

示例 - 修复前

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 配额 计入 计入
环境变量 可用 可用
密钥访问 不可用 可用
权限检查

🔗 相关资源


📞 获取帮助

如果调试工作流运行出错:

  1. 检查工作流语法

    • 使用 YAML 验证器
    • 查看错误消息
  2. 查看完整日志

    • 点击 "Copy Logs" 保存日志
    • 搜索关键错误信息
  3. 简化工作流

    • 移除不必要的步骤
    • 逐步添加功能
  4. 寻求帮助