什么是 GitHub Actions

GitHub Actions 是 GitHub 内置的 CI/CD 持续集成与持续部署工具。简单说,就是当你在 GitHub 上 push 代码、创建 PR 或发布 Release 时,自动执行你定义的一系列任务——比如跑测试、构建项目、部署到服务器。

跟 Jenkins、GitLab CI 相比,GitHub Actions 的最大优势是跟仓库深度绑定,不需要额外搭建 CI 服务器,直接在仓库里写个 YAML 配置文件就能跑起来。

核心概念:3 分钟搞懂

  • Workflow(工作流):一个自动化流程,定义在 .github/workflows/*.yml 文件中
  • Job(任务):Workflow 由多个 Job 组成,每个 Job 在不同 Runner 上运行
  • Step(步骤):Job 里的每一步操作,比如 checkout 代码、安装依赖、运行测试
  • Action(动作):可复用的步骤单元,可以从 GitHub Marketplace 下载社区写好的 Action
  • Runner(运行器):执行 Workflow 的服务器,GitHub 提供免费的 Ubuntu/Windows/macOS Runner

实战:写一个最简单的 CI 工作流

假设你有一个 Node.js 项目,每次 push 代码时自动运行测试。在仓库根目录创建 .github/workflows/ci.yml

name: CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 18
      - run: npm ci
      - run: npm test

这个配置做了几件事:

  • on.push/pull_request:触发条件,main 分支有 push 或 PR 时自动运行
  • runs-on: ubuntu-latest:用 GitHub 提供的 Ubuntu 服务器
  • actions/checkout@v4:把代码拉到 Runner 上(官方 Action)
  • actions/setup-node@v4:安装指定版本的 Node.js
  • npm ci && npm test:安装依赖并跑测试

写好这个文件 push 上去,GitHub 会自动识别并执行。在仓库的 Actions 标签页能看到运行状态。

常用场景分享

自动部署到服务器

- name: Deploy to Server
  uses: easingthemes/ssh-deploy@v4
  env:
    SSH_PRIVATE_KEY: ${{ secrets.SSH_KEY }}
    REMOTE_HOST: ${{ secrets.HOST }}
    TARGET: /var/www/app

把服务器连接信息存在仓库的 Secrets 里,每次 push 自动部署。再也不用手动 FTP 上传了。

自动发 Release

配合 actions/create-release,打 Tag 时自动生成 Release 页面和 changelog。很多开源项目都在用。

定时任务

on:
  schedule:
    - cron: "0 8 * * *"

每天早上 8 点自动运行,可以跑数据抓取、日报生成之类的任务。

记几个实用技巧

  • 缓存依赖:用 actions/cache 缓存 node_modules 或 pip,能省一半以上的安装时间
  • 矩阵构建:一个 Job 同时在多个版本/环境上跑,strategy.matrix 很好用
  • Artifact 上传:用 actions/upload-artifact 保存构建产物,比如 APK、Docker 镜像
  • 免费额度:GitHub 免费账户每月有 2000 分钟运行时间,个人项目完全够用
  • 自建 Runner:如果你的项目需要 GPU 或特定硬件,可以自己注册 Runner,不占用免费额度

避坑指南

Secret 别写死:密码、Token 一定要存在仓库 Settings → Secrets and variables → Actions 里,用 ${{ secrets.XXX }} 引用。

YAML 缩进:GitHub Actions 对缩进敏感,tab 和空格混用会导致解析失败。建议统一用 2 空格缩进。

Workflow 超时:默认每个 Job 最长 6 小时,如果任务可能跑很久,可以显式设置 timeout-minutes: 60

Debug 日志:在仓库 Secrets 里加 ACTIONS_STEP_DEBUG=true,日志里会输出详细的 debug 信息,排查问题很有用。

总结

GitHub Actions 是我用过最顺手的 CI/CD 工具之一。配置文件的写法有阅读友好的 YAML 格式、官方和社区提供了大量现成的 Action 可复用、跟 GitHub 生态无缝集成。如果你的项目放在 GitHub 上,强烈建议试试看——从简单的自动化测试开始,慢慢加入部署、发布、定时任务,一天比一天省心。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐