L30. 定时任务自动化:GitHub Actions
Vibe Coding 宣言:能让代码自己跑的,绝对不让人去点运行。
0. 为什么这一课至关重要? (Why It Matters)
- Crontab:你还在半夜爬起来手动跑脚本?太惨了。
- CI/CD:持续集成/持续交付。代码一 push,自动跑测试,自动部署。这是专业开发者的标志。
- 免费算力:GitHub 免费给你提供服务器跑这些任务。
1. 目标 (Goal)
利用 GitHub Actions 每天定时运行你的爬虫脚本,并自动更新数据库。
2. 核心概念/装备/指令 (The Core)
2.1 Workflow (The Flow)
.github/workflows/xxx.yml 文件。 定义了:什么时候跑?在什么环境跑?跑什么命令?
2.2 Trigger (The Switch)
push: 代码提交时触发。schedule: 定时触发(Cron 表达式)。workflow_dispatch: 手动点击触发。
3. 实战演练 (Action)
Step 1: 创建 Workflow 文件
在项目根目录新建 .github/workflows/daily_crawler.yml:
yaml
name: Daily Crawler
on:
schedule:
- cron: '0 0 * * *' # 每天 UTC 0点 (北京时间早上8点)
workflow_dispatch: # 允许手动触发
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install dependencies
run: |
pip install -r requirements.txt
- name: Run crawler
env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}
run: |
python main.pyStep 2: 配置 Secrets
你的数据库密码不能写在 yaml 里! 去 GitHub 仓库 -> Settings -> Secrets and variables -> Actions -> New repository secret。 填入 DATABASE_URL。
Step 3: 提交并测试
git push。 去 GitHub 仓库 -> Actions -> 点击左侧 Daily Crawler -> Run workflow。
4. 常见问题 (FAQ - Vibe Style)
Q: GitHub Actions 收费吗? A: 公开仓库免费。 私有仓库每个月有 2000 分钟免费额度。足够你用的。
Q: 爬虫在 GitHub 上跑会被封吗? A: 有可能。 GitHub 的 IP 是公开的,很多网站会封。如果被封了,就得换别的办法(比如在 Railway 上跑 Worker)。
Q: 怎么调试? A: 看 Logs。 每一个 Step 的输出都能在 Actions 页面看到。
5. 验收标准 (Definition of Done)
- GitHub Actions 页面有一个绿色的勾(任务成功)。
- 你的数据库里多了一批新数据。
- 不需要你开电脑,明天早上它自动会跑。
Next Mission: L31. 域名与监控:给你的孩子起个名