【GitHub Workflows 基础(一)】认识 .github/workflows/ 下的多个工作流

📘 GitHub Workflows 基础(一):认识 .github/workflows/ 下的多个工作流

🔰 这是 GitHub Actions 系列入门第一篇,我们将带你认识:.github/workflows/ 目录下为什么可以存在多个工作流(workflow),它们之间如何协作,它们的名字到底重不重要?让我们从头开始,一探究竟!


🚀 什么是 GitHub Workflows?

简单说,GitHub Workflows 是放在 .github/workflows/ 目录下的 自动化脚本文件,用于定义当你做某些事情(如提交代码、创建 PR、发布版本等)时,GitHub 要帮你自动完成哪些任务,比如:

  • 自动测试
  • 自动部署
  • 自动构建
  • 自动上传资源
  • 自动生成文档

每个 workflow 就是一套**"自动执行的剧本"**。


🧩 一个项目可以有多个工作流吗?

答案是:当然可以!并且推荐这样做!

你可以把不同任务分开,比如:

bash 复制代码
.github/
  workflows/
    ├── deploy.yml        # 处理部署逻辑
    ├── lint.yml          # 提交代码时进行代码风格检查
    ├── test.yml          # PR 时运行测试用例
    ├── static-assets.yml # 构建静态资源或生成文档

🔧 每个 .yml 文件就是一个独立的工作流(workflow),可以单独触发、单独运行、单独查看日志,互不干扰,非常清晰!


🧠 文件名重要吗?它只是"名字"!

文件名可以任意取,GitHub 根本不关心你叫它啥!

只要放在 .github/workflows/ 目录下,GitHub 会自动识别并读取它。

✅ 合法的例子:

bash 复制代码
.github/workflows/my-workflow.yml
.github/workflows/abc123.yml
.github/workflows/🌈彩虹计划.yml

📌 判断它"何时触发、做什么事情",完全依赖于 .yml 文件中的内容 ,比如 on:jobs:steps: 等。


📄 示例:一个最简单的工作流

yaml 复制代码
# .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: 字段来决定:

  • 什么时候触发它
  • 要不要执行它

🧪 举个例子:

yaml 复制代码
# test.yml
on: [push]

# deploy.yml
on: [push]

git push 一次,会同时触发 这两个 workflow,它们并行执行,互不干扰。


🔁 如何控制多个工作流之间的顺序?

默认情况下,它们是并行运行的。

但你可以在 同一个 workflow 的多个 job 中设置依赖:

yaml 复制代码
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、图片等文件。

错误示例:

bash 复制代码
.github/workflows/readme.md    ❌ 不会执行
.github/workflows/helper.py    ❌ 不会执行
.github/workflows/config.json  ❌ 不会执行

🧪 如何查看每个 workflow 的运行情况?

  1. 打开你的 GitHub 仓库
  2. 点击上方的 "Actions" 标签页
  3. 左边会列出所有 workflow(以你 name: 字段命名)
  4. 点击查看运行历史、日志、失败原因等

🧭 目录结构参考

bash 复制代码
.github/
  workflows/
    ├── build.yml          # 构建流程
    ├── deploy.yml         # 自动部署 GitHub Pages
    ├── lint.yml           # eslint 检查
    ├── test.yml           # 自动化测试

✅ 总结一句话

一个项目可以拥有多个工作流,文件名只是"外衣",真正决定这个 workflow 是什么、何时触发、做什么事的,是 .yml 里面的内容。


🔮 下一篇预告

👉 《GitHub Workflows 基础(二):深入理解 onjobssteps 的语法与逻辑》

相关推荐
zzqssliu5 小时前
煤炉自动代拍系统的队列设计与超时控制机制
git·github
fthux8 小时前
“装闭”,让装修套路“装”不下去
人工智能·ai·开源·github·open source
用户849137175471611 小时前
想做护眼工具却脑子一片空白?我用 OpenSpec 把模糊想法聊成了 v0.1
github·vibecoding
wangruofeng12 小时前
git-filter-repo 把 .git 从 112MB 砍到 1.4MB,但漏推 tag 让 clone 又胖回来
github·devops
峰向AI12 小时前
Block 放出大招!Buzz:一个中继统一代码、聊天、CI 全流程
github
dong_junshuai12 小时前
每天一个开源项目#47 4.4K Stars 的 LikeC4:让架构图随代码进化
github
独立开阀者_FwtCoder15 小时前
最近做了一个健身小程序:智形健身助手,健身的佬们来提点意见
前端·javascript·github
夕夕木各19 小时前
从第一个 PR 到 Vite 官方中文文档维护者
github·vite
隔窗听雨眠21 小时前
GitHub Actions自动化运维实战:从零构建一体化CI/CD流水线
运维·自动化·github
dong_junshuai2 天前
每天一个开源项目#46 World Monitor:6.6万星、56层地图的全球情报中枢
github