了解工作流
工作流是用于生成、测试、打包、发布或部署项目的自动化过程。 它们由一个或多个作业组成,这些作业在响应存储库中的特定事件时运行。
工作流结构
每个工作流都包含以下关键组件:
触发器(事件)
定义您的工作流应何时运行 - 在推送、拉取请求、计划任务或手动触发时。
Jobs
在同一运行器上执行的一组步骤。 作业默认并行运行,但可配置为按顺序运行。
Steps
作业中的单个任务可以运行命令、设置任务或使用动作。
运行器
执行您作业的计算环境——无论是 GitHub 托管的还是自托管的。
工作流位置和命名
工作流作为 YAML 文件 .github/workflows 存储在存储库的目录中。 文件名将成为 GitHub UI 中的工作流标识符。
新式工作流示例
下面是使用当前最佳做法的综合示例:
# .github/workflows/ci.yml
name: CI Pipeline
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
schedule:
- cron: "0 2 * * 0" # Weekly dependency check
env:
NODE_VERSION: "20"
jobs:
test:
name: Test and Lint
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Run linting
run: npm run lint
- name: Run tests with coverage
run: npm run test:coverage
- name: Upload coverage reports
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
build:
name: Build Application
runs-on: ubuntu-latest
needs: test
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Build application
run: npm run build
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: build-files
path: dist/
新式工作流的关键改进
此示例演示了当前的最佳做法:
-
最新动作版本:使用
@v4常用动作的版本 - 依赖项缓存:加快工作流执行
- 环境变量:集中式配置管理
-
作业依赖项:
build作业仅在test成功后运行 - 项目处理:正确存储和共享生成输出
- 安全性:对敏感数据(如令牌)使用机密
其他资源
浏览以下资源以增强工作流知识: