了解工作流

已完成

工作流是用于生成、测试、打包、发布或部署项目的自动化过程。 它们由一个或多个作业组成,这些作业在响应存储库中的特定事件时运行。

工作流结构

每个工作流都包含以下关键组件:

触发器(事件)

定义您的工作流应何时运行 - 在推送、拉取请求、计划任务或手动触发时。

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 成功后运行
  • 项目处理:正确存储和共享生成输出
  • 安全性:对敏感数据(如令牌)使用机密

其他资源

浏览以下资源以增强工作流知识: