GitHub Actions 自动化部署入门

前言

在现代开发中,手动部署不仅耗时,还容易出错。GitHub Actions 作为 GitHub 提供的 CI/CD(持续集成与持续部署)服务,可以帮你在代码提交、合并甚至定时任务时,自动执行构建、测试和部署操作。
今天我就带你从零开始,学会用 GitHub Actions 自动化部署项目。


一、什么是 GitHub Actions?

GitHub Actions 是 GitHub 内置的自动化工具,可以在你的仓库内设置一系列工作流(workflow),让代码在触发条件下自动执行指定任务,比如:

  • 自动构建和打包
  • 自动部署到服务器或云平台
  • 自动执行单元测试
  • 自动生成文档

简单来说,就是让部署从“手动点击”变成“自动触发”


二、创建你的第一个工作流

  1. 在你的项目根目录创建 .github/workflows 文件夹
  2. 新建一个 deploy.yml 文件
  3. 编写一个最简单的部署示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
name: Deploy Website

on:
push:
branches:
- main # 当 main 分支有提交时触发

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: 拉取代码
uses: actions/checkout@v4

- name: 安装 Node.js
uses: actions/setup-node@v4
with:
node-version: '18'

- name: 安装依赖
run: npm install

- name: 构建项目
run: npm run build

- name: 部署到服务器
run: |
ssh user@your-server "cd /path/to/project && git pull && npm install && pm2 restart all"

这样,每次你往 main 分支推送代码,GitHub Actions 都会自动执行部署流程。


三、Secrets 配置

为了安全起见,敏感信息(服务器 IP、账号、密码、API Key 等)不要直接写进 YAML 文件。
在仓库 Settings → Secrets and variables → Actions 里添加变量,例如:

  • SERVER_HOST:服务器 IP
  • SERVER_USER:服务器用户名
  • SERVER_KEY:SSH 私钥

然后在 deploy.yml 中用 ${{ secrets.SERVER_HOST }} 引用。


四、常见部署场景

  • 静态网站部署到 GitHub Pages
  • Node.js 项目部署到 VPS
  • Python 项目自动化发布到 PyPI
  • Docker 镜像构建并推送到 Docker Hub

每种场景的工作流配置略有不同,但核心思想都是:

触发事件 → 运行任务 → 部署或发布


五、优化与进阶

  • 使用 缓存依赖 加速构建
    1
    2
    3
    4
    5
    - name: 缓存 Node 模块
    uses: actions/cache@v4
    with:
    path: node_modules
    key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
  • 多环境部署(测试环境、生产环境)
  • 定时触发(例如每天凌晨自动构建)

结语

GitHub Actions 不仅适合部署,还能帮你完成一切重复性工作。
从今天开始,把那些机械的“打包、上传、重启服务”交给它,你就能腾出更多时间专注于业务和创新。


⚠️ 免责声明:本文仅供个人学习与技术研究使用。