Skip to content

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.py

Step 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)

  1. GitHub Actions 页面有一个绿色的勾(任务成功)。
  2. 你的数据库里多了一批新数据。
  3. 不需要你开电脑,明天早上它自动会跑。

Next Mission: L31. 域名与监控:给你的孩子起个名

基于 Claude Code 构建