想象 GitHub Actions 就像是你的"自动助手",当你的代码仓库发生特定事件时,它就会自动执行你预先设定的任务。
1. 最基础的用法:自动测试 🧪
就像你写完作业要检查一样,当你提交代码时,可以自动运行测试:
name: Basic Test
on: [push] # 当有代码推送时触发jobs:test:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v4- name: Run testsrun: |python -m pytest
2. 自动发布版本 📦
当你给代码打上版本标签(比如 v1.0.0)时,自动打包并发布:
name: Release
on:push:tags:- 'v*' # 当推送 v 开头的标签时触发jobs:release:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v4- name: Create Releaseuses: actions/create-release@v1with:tag_name:${{ github.ref }}release_name: Release${{ github.ref }}
3. 代码质量检查 👀
就像语文老师检查作文一样,自动检查代码格式:
name: Code Quality
on: [push]jobs:lint:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v4- name: Check stylerun: |pip install flake8flake8 .
4. 自动部署网站 🚀
比如你有一个博客,当你更新文章时自动部署:
name: Deploy Blog
on:push:branches: [ main ] # 当主分支有更新时jobs:deploy:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v4- name: Deploy to GitHub Pagesuses: peaceiris/actions-gh-pages@v3with:github_token:${{ secrets.GITHUB_TOKEN }}publish_dir: ./public
5. 定时任务 ⏰
像闹钟一样,定时执行某些操作:
name: Daily Task
on:schedule:- cron: '0 0 * * *' # 每天零点执行jobs:daily-job:runs-on: ubuntu-lateststeps:- name: Run daily taskrun: echo "执行每日任务"
实用场景举例 🌟
-
学术项目:
代码推送 → 运行实验 → 生成图表 → 更新文档
-
个人博客:
写文章 → 自动检查拼写 → 构建网站 → 发布
-
软件项目:
提交代码 → 运行测试 → 代码检查 → 自动发布
进阶技巧 🔥
- 条件执行:
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
- 矩阵构建(在多个环境下测试):
strategy:matrix:python-version: [3.8, 3.9, 3.10]
- 使用缓存加速构建:
- uses: actions/cache@v3with:path: ~/.cache/pipkey:${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
实用公式 📝
- 工作流触发频率:
每月构建次数 = 代码提交次数 × 工作流数量 × 矩阵策略数
- 构建时间估算:
总构建时间 = 基础环境搭建时间(约1分钟) + 依赖安装时间(约2-5分钟) + 实际任务执行时间
当你开始使用时,建议:
- 先从简单的工作流开始
- 逐步添加更多功能
- 观察执行日志解决问题
- 参考他人的工作流程
- 使用官方的 Actions 市场找现成的解决方案
记住:Actions 就像是你的智能助手,可以帮你自动化任何重复性的工作!