11.2.1 Workflow 配置:触发条件与执行环境
一句话破题
GitHub Actions 的 Workflow 是用 YAML 定义的自动化流程,通过指定触发条件和执行步骤来实现 CI/CD。
核心价值
理解 Workflow 配置能让你:
- 在代码提交时自动运行检查
- 在 PR 合并前强制通过测试
- 在发布时自动部署到生产环境
文件结构
.github/
└── workflows/
├── ci.yml # 持续集成
├── deploy.yml # 部署流程
└── release.yml # 发布流程快速上手
触发条件配置
yaml
name: CI
on:
# 推送到指定分支时触发
push:
branches: [main, develop]
paths:
- 'src/**' # 只在 src 目录变更时触发
- '!src/**/*.test.ts' # 忽略测试文件变更
# PR 针对指定分支时触发
pull_request:
branches: [main]
# 定时触发(北京时间每天 8:00)
schedule:
- cron: '0 0 * * *'
# 手动触发
workflow_dispatch:
inputs:
environment:
description: '部署环境'
required: true
default: 'staging'执行环境配置
yaml
jobs:
build:
runs-on: ubuntu-latest # 运行环境
strategy:
matrix:
node-version: [18, 20] # 多版本测试
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm' # 缓存 npm 依赖
- run: npm ci
- run: npm testJob 依赖与并行
yaml
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: npm run lint
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: npm test
build:
needs: [lint, test] # 依赖 lint 和 test 都成功
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: npm run build常用触发事件
| 事件 | 说明 | 示例场景 |
|---|---|---|
push | 推送代码 | 主分支构建 |
pull_request | PR 操作 | 代码审查前检查 |
release | 发布 Release | 自动部署 |
schedule | 定时任务 | 每日安全扫描 |
workflow_dispatch | 手动触发 | 紧急部署 |
条件执行
yaml
jobs:
deploy:
runs-on: ubuntu-latest
# 只在 main 分支且不是 PR 时执行
if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request'
steps:
- run: echo "Deploying to production"避坑指南
新手最容易犯的错
- YAML 缩进错误导致配置解析失败
- 忘记配置
actions/checkout导致没有代码 - 不缓存依赖导致每次都重新下载
- 敏感信息直接写在配置文件中
