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

相关推荐
qianmoQ9 小时前
GitHub 趋势日报 (2025年07月25日)
github
木人舟11 小时前
github copilot接入openai-compatible模型以及去除安全限制的方法
github·copilot
五岁小孩13 小时前
一次性解决Github Enable two-factor authentication
github·2fa
guiyanakaung17 小时前
CMP 如何优雅的实现跨软件的拖拽功能
前端·github
HelloGitHub20 小时前
开源新旗舰 GLM-4.5:不想刷榜,只想干活儿
人工智能·开源·github
星际码仔21 小时前
Zread 和 DeepWiki 怎么选?一张图全搞懂
github·chatglm (智谱)
DogDaoDao21 小时前
GitHub开源项目Zerox:AI驱动的OCR革命
人工智能·深度学习·开源·github·ocr·图像识别·zerox
Albert_Lsk1 天前
【2025/07/28】GitHub 今日热门项目
人工智能·开源·github·开源协议
C++ 老炮儿的技术栈1 天前
在 Scintilla 中为 Squirrel 语言设置语法解析器的方法
linux·运维·c++·git·ubuntu·github·visual studio