为什么你的 GitHub 项目需要 Actions?详解 Workflow、Secrets 与自动部署

877 字
4 分钟
为什么你的 GitHub 项目需要 Actions?详解 Workflow、Secrets 与自动部署

如果你在 GitHub 上维护过项目,一定遇到过这些场景:

  • 每次 push 代码都要手动跑测试

  • 发版前要手动打包、压缩、上传 Release

  • 想自动部署到服务器 / Pages / Docker Hub

  • 想定时跑脚本、爬数据、同步仓库

GitHub Actions 正是为这些自动化而生的。


一、什么是 GitHub Actions?#

GitHub Actions 是 GitHub 官方提供的 自动化工作流(Workflow)系统,可以在特定事件发生时自动执行一系列任务。

你可以把它理解成:“GitHub 内置的 CI/CD + 自动化脚本平台”

能干什么?#

  • CI:自动测试、构建、Lint

  • CD:自动部署到服务器 / Docker / 云平台

  • 自动发布 Release

  • 定时任务(cron)

  • 自动同步代码、生成文档

  • 自动化运维 & 脚本执行


二、GitHub Actions 的核心概念#

GitHub Actions 其实就 5 个关键词:

名称作用
Workflow整个自动化流程
Event触发条件
Job一组任务
Step具体一步
Action可复用的动作

Workflow(工作流)#

  • 一个 Workflow = 一个 yml 文件

  • 存放在仓库的:

.github/workflows/

例如:

.github/workflows/ci.yml

Event(触发事件)#

Workflow 什么时候运行

常见事件:

on:
push:
pull_request:
workflow_dispatch:
事件说明
push推送代码
pull_requestPR 提交
workflow_dispatch手动触发
schedule定时执行

Job(任务)#

  • 一个 Workflow 可以有多个 Job

  • Job 默认并行执行

  • Job 运行在一个虚拟环境中

jobs:
build:
runs-on: ubuntu-latest

Step(步骤)#

  • Job 里的每一步

  • 可以是:

    • 执行命令

    • 调用 Action

steps:
- run: echo "Hello Actions"

Action(动作)#

Action 是别人写好的“插件”,直接拿来用:

- uses: actions/checkout@v4

官方 Action 市场:

https://github.com/marketplace?type=actions


三、一个最简单的 GitHub Actions 示例#

示例:每次 push 自动输出一句话#

name: Hello Actions
on:
push:
jobs:
hello:
runs-on: ubuntu-latest
steps:
- name: Say hello
run: echo "Hello GitHub Actions!"

保存为:

.github/workflows/hello.yml

推送代码后,你就能在 Actions 标签页看到运行日志。


四、常见用法 1:自动 CI(测试 / 构建)#

Node.js 项目自动测试#

name: Node CI
on:
push:
pull_request:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm install
- run: npm test

常用 setup Action:

语言Action
Nodeactions/setup-node
Pythonactions/setup-python
Javaactions/setup-java
Goactions/setup-go

五、常见用法 2:自动发布 Release#

示例:打 tag 后自动发布 Release#

on:
push:
tags:
- "v*"
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: softprops/action-gh-release@v2
with:
generate_release_notes: true

用途:

  • 自动生成 Release

  • 自动附带编译产物

  • 非常适合开源项目


六、常见用法 3:定时任务(Cron)#

每天凌晨跑一次脚本#

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

Cron 使用的是 UTC 时间,不是本地时间!


七、Secrets:安全存储敏感信息#

千万不要把 Token / 密码写进 yml!

正确做法#

  1. 仓库 → Settings → Secrets → Actions

  2. 添加:

SSH_KEY
API_TOKEN
  1. 在 Workflow 中使用:
env:
TOKEN: ${{ secrets.API_TOKEN }}

八、常见用法 4:自动部署(示例)#

推送代码后自动部署到服务器(SSH)#

- name: Deploy
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USER }}
key: ${{ secrets.SSH_KEY }}
script: |
cd /var/www/app
git pull
docker compose up -d

九、GitHub Actions 的优缺点#

优点#

  • GitHub 原生,零额外部署

  • 对开源项目 免费额度很大

  • Action 生态极其丰富

  • YAML 即配置,学习成本低

缺点#

  • 私有仓库分钟数有限

  • Runner 环境不可长期保存状态

  • YAML 调试体验一般

  • 复杂流程可读性会下降


十、适合用 GitHub Actions 的场景#

✔ 开源项目

✔ 个人博客 / 文档

✔ CI/CD 自动化

✔ 定时脚本

✔ 云函数 / Worker 构建

✔ Docker 自动构建推送


十一、学习 & 资源推荐#

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

为什么你的 GitHub 项目需要 Actions?详解 Workflow、Secrets 与自动部署
https://www.kshare.top/posts/为什么你的-github-项目需要-actions详解-workflowsecrets-与自动部署/
作者
Kshare
发布于
2026-02-05
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Kshare
Hello, I'm Kshare.
公告
欢迎来到Kshare站点!近期站点进行升级,欢迎访问和收藏站点!
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
137
分类
12
标签
59
总字数
333,011
运行时长
0
最后活动
0 天前

文章目录