GitHub Actions 简介 #

GitHub Actions是GitHub推出的自动化平台,让你能够自动执行软件开发工作流程。它是现代DevOps实践的核心工具之一。

什么是CI/CD? #

在深入了解GitHub Actions之前,先理解CI/CD的概念:

持续集成 (CI) #

持续集成是一种开发实践,要求开发者频繁地将代码集成到主干分支。每次集成都通过自动化的构建和测试来验证,从而尽早发现集成错误。

text
代码提交 → 自动构建 → 自动测试 → 结果反馈

持续部署 (CD) #

持续部署是持续集成的延伸,将通过测试的代码自动部署到生产环境。

text
测试通过 → 自动部署 → 生产环境

GitHub Actions 核心概念 #

工作流 (Workflow) #

工作流是一个可配置的自动化过程,由一个或多个作业组成。工作流定义在YAML文件中,存放在仓库的 .github/workflows 目录。

事件 (Event) #

事件是触发工作流运行的特定活动,例如:

  • 推送代码 (push)
  • 创建Pull Request (pull_request)
  • 定时触发 (schedule)
  • 手动触发 (workflow_dispatch)

作业 (Job) #

作业是工作流中的一组步骤,在同一个运行器上执行。作业可以并行或顺序执行。

步骤 (Step) #

步骤是作业中的最小执行单元,可以是执行shell命令或使用Action。

动作 (Action) #

Action是可重用的代码单元,执行特定的任务。GitHub Marketplace提供了大量现成的Action。

运行器 (Runner) #

Runner是执行工作流的服务器。GitHub提供了托管的Runner,也支持自托管Runner。

GitHub Actions 的优势 #

1. 原生集成 #

yaml
name: CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: echo "Hello, GitHub Actions!"

工作流配置直接存储在代码仓库中,与代码版本同步管理。

2. 免费额度 #

账户类型 免费额度
公开仓库 无限制
私有仓库 每月2000分钟

3. 跨平台支持 #

yaml
jobs:
  test:
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
    runs-on: ${{ matrix.os }}
    steps:
      - run: echo "Running on ${{ matrix.os }}"

4. 丰富的生态系统 #

GitHub Marketplace提供数千个现成的Action:

  • 代码检查 (ESLint, Prettier)
  • 测试框架 (Jest, Pytest)
  • 部署工具 (AWS, Azure, GCP)
  • 通知集成 (Slack, Email)

应用场景 #

1. 持续集成 #

yaml
name: CI
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - run: npm test
      - run: npm run lint

2. 自动部署 #

yaml
name: Deploy
on:
  push:
    branches: [main]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm run build
      - uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./dist

3. 定时任务 #

yaml
name: Scheduled Task
on:
  schedule:
    - cron: '0 0 * * *'
jobs:
  cleanup:
    runs-on: ubuntu-latest
    steps:
      - run: echo "Running daily cleanup..."

4. 代码质量检查 #

yaml
name: Code Quality
on: [push]
jobs:
  analyze:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: github/codeql-action/init@v2
      - uses: github/codeql-action/analyze@v2

GitHub Actions vs 其他CI/CD工具 #

特性 GitHub Actions Jenkins GitLab CI Travis CI
配置方式 YAML Groovy YAML YAML
托管服务 可选
与GitHub集成 原生 插件 良好
免费额度 自建 有限
学习曲线

工作流执行流程 #

text
┌─────────────────────────────────────────────────────────────┐
│                      GitHub Repository                       │
├─────────────────────────────────────────────────────────────┤
│  .github/workflows/                                         │
│  ├── ci.yml                                                 │
│  └── deploy.yml                                             │
└─────────────────────────────────────────────────────────────┘
                            │
                            ▼
                    ┌───────────────┐
                    │  Event Trigger │
                    │  (push/PR/etc) │
                    └───────────────┘
                            │
                            ▼
                    ┌───────────────┐
                    │   Workflow    │
                    │   Execution   │
                    └───────────────┘
                            │
              ┌─────────────┼─────────────┐
              ▼             ▼             ▼
         ┌────────┐   ┌────────┐   ┌────────┐
         │  Job 1 │   │  Job 2 │   │  Job 3 │
         │ (并行) │   │ (并行) │   │ (并行) │
         └────────┘   └────────┘   └────────┘
              │             │             │
              ▼             ▼             ▼
         ┌────────┐   ┌────────┐   ┌────────┐
         │ Step 1 │   │ Step 1 │   │ Step 1 │
         │ Step 2 │   │ Step 2 │   │ Step 2 │
         │ Step 3 │   │ Step 3 │   │ Step 3 │
         └────────┘   └────────┘   └────────┘

下一步学习 #

现在你已经了解了GitHub Actions的基本概念,接下来可以:

  1. 快速开始 - 设置你的第一个工作流
  2. 工作流文件结构 - 深入了解YAML配置
  3. 第一个工作流 - 动手实践

小结 #

  • GitHub Actions是GitHub原生的CI/CD平台
  • 工作流由事件、作业、步骤和动作组成
  • 支持多种触发方式和跨平台运行
  • 拥有丰富的Action生态系统
  • 适合各种自动化场景,从CI到CD到定时任务
最后更新:2026-03-28