工作流
为什么要了解工作流
在 AI 时代做开发,手动重复的事情越少越好。工作流(Workflow)自动化可以帮你:
- 代码提交后自动运行测试和构建
- 自动部署网站或应用
- 自动化日常任务(如数据备份、定时报告)
掌握工作流自动化是现代开发者的必备技能,也是吴恩达提到的"AI 工程师"需要具备的能力之一。
GitHub Actions
GitHub Actions 是最常用的 CI/CD 工具之一,和 GitHub 深度集成。你可以用它来自动构建、测试和部署项目。
什么是 CI/CD
- CI(持续集成):每次代码提交后,自动运行测试和构建,确保代码质量
- CD(持续部署):测试通过后,自动部署到生产环境
基本概念
- Workflow(工作流):定义在
.github/workflows/目录下的 YAML 文件 - Trigger(触发器):什么事件触发工作流(如 push、pull request)
- Job(作业):工作流中的一个任务单元
- Step(步骤):作业中的一个具体步骤
示例:自动构建 MkDocs 站点
# .github/workflows/deploy.yml
name: Deploy to GitHub Pages
on:
push:
branches:
- main
permissions:
contents: write
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: 检出代码
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: 设置 Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: 安装依赖
run: pip install -r requirements.txt
- name: 构建网站
run: mkdocs build --clean
- name: 部署到 GitHub Pages
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./site
常用 GitHub Actions
自动运行测试
name: Run Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: 设置 Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: 安装依赖
run: pip install -r requirements.txt
- name: 运行测试
run: pytest
代码质量检查
name: Lint
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: 设置 Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: 安装 linter
run: pip install ruff
- name: 检查代码风格
run: ruff check .
其他自动化工具
Makefile
对于简单的本地自动化任务,Makefile 依然是最实用的方案(参见 [[Make]] 章节)。
pre-commit
在 Git 提交前自动运行检查:
pip install pre-commit
# .pre-commit-config.yaml
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.5.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
Husky
在 Node.js 项目中使用 Git Hooks:
npx husky init
其他资源
- GitHub Actions 官方文档
- GitHub Actions 中文文档
- awesome-actions — 常用 Actions 汇总
- CI/CD 入门教程