📘 GitHub Workflows 基础(一):认识 .github/workflows/
下的多个工作流
🔰 这是 GitHub Actions 系列入门第一篇,我们将带你认识:
.github/workflows/
目录下为什么可以存在多个工作流(workflow),它们之间如何协作,它们的名字到底重不重要?让我们从头开始,一探究竟!
🚀 什么是 GitHub Workflows?
简单说,GitHub Workflows 是放在 .github/workflows/
目录下的 自动化脚本文件,用于定义当你做某些事情(如提交代码、创建 PR、发布版本等)时,GitHub 要帮你自动完成哪些任务,比如:
- 自动测试
- 自动部署
- 自动构建
- 自动上传资源
- 自动生成文档
每个 workflow 就是一套**“自动执行的剧本”**。
🧩 一个项目可以有多个工作流吗?
答案是:当然可以!并且推荐这样做!
你可以把不同任务分开,比如:
.github/
workflows/
├── deploy.yml # 处理部署逻辑
├── lint.yml # 提交代码时进行代码风格检查
├── test.yml # PR 时运行测试用例
├── static-assets.yml # 构建静态资源或生成文档
🔧 每个 .yml
文件就是一个独立的工作流(workflow),可以单独触发、单独运行、单独查看日志,互不干扰,非常清晰!
🧠 文件名重要吗?它只是“名字”!
文件名可以任意取,GitHub 根本不关心你叫它啥!
只要放在 .github/workflows/
目录下,GitHub 会自动识别并读取它。
✅ 合法的例子:
.github/workflows/my-workflow.yml
.github/workflows/abc123.yml
.github/workflows/🌈彩虹计划.yml
📌 判断它“何时触发、做什么事情”,完全依赖于 .yml
文件中的内容,比如 on:
、jobs:
、steps:
等。
📄 示例:一个最简单的工作流
# .github/workflows/test.yml
name: Run Tests
on:
pull_request:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: echo "✅ 正在运行测试..."
这个工作流的意思是:
- 只要有人提交了 Pull Request,
- GitHub 就会运行这个文件中定义的步骤。
🧬 多个 workflow 会不会冲突?
**不会!**GitHub 会根据每个 workflow 中的 on:
字段来决定:
- 什么时候触发它
- 要不要执行它
🧪 举个例子:
# test.yml
on: [push]
# deploy.yml
on: [push]
你 git push
一次,会同时触发这两个 workflow,它们并行执行,互不干扰。
🔁 如何控制多个工作流之间的顺序?
默认情况下,它们是并行运行的。
但你可以在 同一个 workflow 的多个 job 中设置依赖:
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: echo "构建"
deploy:
needs: build # ✅ 表示部署必须等待构建完成
runs-on: ubuntu-latest
steps:
- run: echo "部署"
⚠️ 跨 workflow 的依赖不能直接写 needs:
,如果你想控制多个 workflow 的顺序,要使用 workflow_run 触发器(我们后面会讲)。
❌ workflows 目录还能放别的文件吗?
不能!
.github/workflows/
目录只能放 .yml
或 .yaml
工作流定义文件,不能放 .js
、.py
、.md
、图片等文件。
错误示例:
.github/workflows/readme.md ❌ 不会执行
.github/workflows/helper.py ❌ 不会执行
.github/workflows/config.json ❌ 不会执行
🧪 如何查看每个 workflow 的运行情况?
- 打开你的 GitHub 仓库
- 点击上方的 “Actions” 标签页
- 左边会列出所有 workflow(以你
name:
字段命名) - 点击查看运行历史、日志、失败原因等
🧭 目录结构参考
.github/
workflows/
├── build.yml # 构建流程
├── deploy.yml # 自动部署 GitHub Pages
├── lint.yml # eslint 检查
├── test.yml # 自动化测试
✅ 总结一句话
一个项目可以拥有多个工作流,文件名只是“外衣”,真正决定这个 workflow 是什么、何时触发、做什么事的,是
.yml
里面的内容。
🔮 下一篇预告
👉 《GitHub Workflows 基础(二):深入理解 on
、jobs
、steps
的语法与逻辑》