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的基本概念,接下来可以:
小结 #
- GitHub Actions是GitHub原生的CI/CD平台
- 工作流由事件、作业、步骤和动作组成
- 支持多种触发方式和跨平台运行
- 拥有丰富的Action生态系统
- 适合各种自动化场景,从CI到CD到定时任务
最后更新:2026-03-28