【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 的语法与逻辑》

相关推荐
Giant1003 小时前
小白也能看懂的 Git 命令手册:从配置到提交,一步到位
github
ruanCat7 小时前
使用 vite 的 base 命令行参数来解决项目部署在 github page 的路径问题
前端·github
FreeBuf_8 小时前
Salesloft Drift网络攻击事件溯源:GitHub账户失陷与OAuth令牌窃取
安全·github
第七种黄昏8 小时前
GitHub 项目提交完整流程(含常见问题与解决办法)
github
确定过眼神!9 小时前
GitHub提交到公共项目流程
github·changeset
掘我的金10 小时前
mpc4j 在 macOS M3(Apple Silicon)上的部署实录:JDK 21(Preview)与 FourQ 缺失排错
github
油泼辣子多加11 小时前
[特殊字符] GitHub 热门开源项目速览(2025/09/09)
github
CoderJia程序员甲12 小时前
GitHub 热榜项目 - 日榜(2025-09-09)
ai·开源·大模型·github·ai教程
BillKu13 小时前
下载 Eclipse Temurin 的 OpenJDK 提示 “无法访问此网站 github.com 的响应时间过长”
github·openjdk·eclipse temurin
绝无仅有13 小时前
HTTP面试之实战经验与总结
后端·面试·github