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

相关推荐
希尔伯特旅馆1 小时前
Tushare:量化投资数据获取
github
海绵不是宝宝81715 小时前
连接远程服务器上的 jupyter notebook,解放本地电脑
服务器·jupyter·github
黑客飓风17 小时前
当GitHub宕机时,我们如何协作?
github·notepad++
mit6.82421 小时前
[Git] 如何拉取 GitHub 仓库的特定子目录
git·github
用户4665370150521 小时前
如何在 IntelliJ IDEA 中可视化压缩提交到生产分支
后端·github
用户466537015051 天前
git代码压缩合并
后端·github
若水晴空初如梦1 天前
QT聊天项目DAY19
github
张较瘦_1 天前
[论文阅读] 人工智能 | 当Hugging Face遇上GitHub:预训练语言模型的跨平台同步难题与解决方案
论文阅读·人工智能·github
掘金安东尼1 天前
字节前端三面复盘:基础不花哨,代码要扎实(含高频题解)
前端·面试·github
寻月隐君1 天前
Rust Web 开发实战:使用 SQLx 连接 PostgreSQL 数据库
后端·rust·github