Appearance
GitHub Actions
什么是 GitHub Actions
GitHub Actions 是 GitHub 提供的 CI/CD 服务,它允许你在 GitHub 仓库中自动执行软件构建、测试和部署流程。GitHub Actions 使用工作流(Workflows)来定义自动化任务,可以响应仓库中的事件(如推送、拉取请求等)。
GitHub Actions 的特点
1. 与 GitHub 集成
- 直接在 GitHub 仓库中配置
- 响应 GitHub 事件
- 与 GitHub 生态系统无缝集成
2. 灵活的工作流
- 自定义工作流
- 支持多种事件触发
- 并行和串行执行任务
3. 丰富的市场
- 大量预构建的 Actions
- 社区贡献的 Actions
- 可重用的工作流
4. 强大的执行环境
- 支持 Linux、macOS 和 Windows
- 可配置的虚拟环境
- 丰富的工具和软件
5. 免费使用
- 公共仓库免费
- 私有仓库有一定的免费额度
GitHub Actions 的基本概念
1. 工作流(Workflow)
- 定义在
.github/workflows/目录下的 YAML 文件 - 由一个或多个作业组成
- 可以由事件触发
2. 事件(Event)
- 触发工作流的事件
- 如 push、pull_request、schedule 等
3. 作业(Job)
- 工作流中的一个独立单元
- 运行在独立的虚拟环境中
- 可以并行或串行执行
4. 步骤(Step)
- 作业中的一个任务
- 可以运行命令或使用 Action
5. Action
- 可重用的任务
- 可以是 GitHub 市场中的 Action 或自定义 Action
创建 GitHub Actions 工作流
基本工作流示例
yaml
name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: 16
- name: Install dependencies
run: npm install
- name: Build
run: npm run build
- name: Test
run: npm test工作流触发事件
yaml
on:
# 推送事件
push:
branches: [ main, develop ]
paths-ignore:
- 'README.md'
# 拉取请求事件
pull_request:
branches: [ main ]
# 定时触发
schedule:
- cron: '0 0 * * *'
# 手动触发
workflow_dispatch:矩阵构建
yaml
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14, 16, 18]
steps:
- uses: actions/checkout@v3
- name: Set up Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm install
- name: Build
run: npm run build
- name: Test
run: npm testGitHub Actions 市场
GitHub Actions 市场是一个包含大量预构建 Actions 的仓库,你可以在工作流中使用这些 Actions 来简化配置。
常用 Actions
- actions/checkout:检出代码
- actions/setup-node:设置 Node.js 环境
- actions/setup-python:设置 Python 环境
- actions/setup-java:设置 Java 环境
- actions/upload-artifact:上传构建产物
- actions/download-artifact:下载构建产物
- actions/cache:缓存依赖项
GitHub Actions 最佳实践
1. 工作流设计
- 保持工作流简洁
- 合理划分作业
- 使用矩阵构建测试多个版本
2. 性能优化
- 缓存依赖项
- 并行执行测试
- 使用适当的运行环境
3. 安全性
- 使用 GitHub Secrets 存储敏感信息
- 限制工作流的权限
- 定期更新 Actions 版本
4. 可维护性
- 使用可重用的工作流
- 模块化工作流配置
- 提供清晰的注释
5. 监控和调试
- 添加详细的日志
- 使用 GitHub Actions 日志查看器
- 测试工作流变更
GitHub Actions 常见问题
1. 工作流不触发
- 检查事件配置
- 检查分支名称
- 检查文件路径
2. 构建失败
- 检查构建日志
- 检查依赖项
- 检查环境配置
3. 性能问题
- 优化缓存策略
- 减少不必要的步骤
- 使用并行构建
4. 安全问题
- 避免硬编码敏感信息
- 使用 GitHub Secrets
- 限制 Actions 的权限
学习资源
实践练习
- 创建一个简单的 GitHub Actions 工作流
- 配置自动测试
- 实现持续部署
- 使用矩阵构建测试多个版本
- 集成第三方服务