news 2026/9/15 20:24:40

画完一条并行 CI/CD 流水线,只需要 4 层升级:Mermaid 时序图进阶指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
画完一条并行 CI/CD 流水线,只需要 4 层升级:Mermaid 时序图进阶指南

画完一条并行 CI/CD 流水线,只需要 4 层升级:Mermaid 时序图进阶指南

【免费下载链接】mermaidGeneration of diagrams like flowcharts or sequence diagrams from text in a similar manner as markdown项目地址: https://gitcode.com/GitHub_Trending/me/mermaid

Mermaid 是开源项目:在代码块里写几行文本,它就渲染成 SVG 图表。时序图(sequenceDiagram)是它表达多系统交互的核心图种,也是 Mermaid 时序图 进阶 语法里最常用的一块。这里以一条 CI/CD 流水线为主线:合并请求提交后,流水线要完成构建、测试、发布,而真实行为远比示例图复杂——测试并行跑、结果会分叉、发布要兜底。做法是拿一张图当画布,把这些行为逐层打补丁进去,从单线程骨架一路升到完整版图。

先画地基:用一条直线画出 CI/CD 主线

画流水线时别急着堆细节,先把必须串行执行的主轴画出来。提交、构建、触发测试这三个动作,就是一条线性消息序列,信息密度反而最高。

autonumber:先给主流程编号

autonumber让每条消息自动编号,排查问题时可以直接对着日志序号说话。

对应真实系统:调度器收到合并请求的 webhook,把构建任务派给构建机;虚线返回是构建完成后异步回传的结果。常见误用是全程不编号、靠"源文顺序"指代消息,后来有人在图里插一条消息,大家的引用全部错位。

activate/deactivate 与 + 简写

激活条表示"此刻谁在处理这个请求",可以显式写activate/deactivate,也可以在箭头后紧跟+激活接收方。上一例的开发者->>+调度器就是简写。只activatedeactivate的后果是激活条一直拖到图底,读者会以为调度器再没返回。

⚡ 让测试用例跑成并行:用 par 给测试阶段分道

构建结束后,真实的流水线绝不会让单测和集测串行排队,而是同时派发、都跑完再汇总。

par/and:单测与集测两条道

par把块内消息序列切成几条互不等待的并行道,道与道之间用and分隔,最后以end收尾。

横向的框线在视觉上宣告"两条道同时结束":调度器在两条结果都回到自己手里之后才汇总。把"汇总两组结果"这种串行动作写进某条道里,会让读者误以为汇总也是并行发生的。

经验值:par 的每一条道必须彼此独立;某条道依赖上一条道的产出时,就该退回串行,别硬塞进道里。

嵌套 par:同一条道再切分

par 支持嵌套,一条道里再放一个 par,适合"集成测试内部还要同时跑冒烟和回归"这类结构。

集测组在同一时刻收到两类用例:核心链路优先验证,全量回归跟着跑。反例是嵌套超过两层,框线密到比文字还窄,图已经不适合承载这个复杂度,该拆图了。

给测试结果分叉:用 alt 和 opt 画通过与失败

alt 多分支:通过 vs 失败

alt 画"如果/否则"的多分支,每个分支用else隔开,读者一眼能数出"只有这几种结局"。

-)这种开尾箭头表示"发出即忘"的通报,值班群不会回任何消息。经典踩坑是用 else 写"也许发生"的事件:else 的语义是非此即彼,把概率事件写成 else,读者会一直去找另一个分支。

opt 可选流程:需要时才附日志

opt 是"可能执行"的分支,没有 else。上一例中"附日志链接"只在存在可复现失败用例时发生,所以单独成 opt 而不塞进 alt。反过来,把必然发生的步骤写成 opt,整张图会带上一种"此环节可有可无"的气质,与线上事实不符。

⚠️ 给部署异常兜底:critical、option 与 rect 收口

critical 关键区加 option 兜底

发布是整条流水线里最不能出错的环节,异常要么回滚、要么叫人,没有中间态,想绕过去是不行的。critical标记"必须成功"的动作,内部用option枚举每种异常的处置路径。

健康检查失败走自动回滚,镜像仓库超时则升级给人工。把 critical 用在"发通知"这种非必须成功的步骤上,所有人都会高估一次失败的严重性。

经验值:option 和 opt 语义不同:看到 critical 的读者默认主路径必须成功,option 是它的异常出口;opt 只说"可能发生",不做承诺。

✅ rect 背景高亮与最终版图

rect给一段消息套上彩色背景,让视线先落在关键阶段。rect 别包满全图,嵌套时也别用相近色,否则高亮本身会失效。下面这条流水线就是前几层升级叠加后的完整形态:

七个角色、两条并行测试道、一个分叉、一个带回滚语义的关键发布区;出事故复盘时,先看绿色块里发生了什么。

延伸路线

  • 时序图语法文档:箭头类型、分组关键字与激活条的完整参照
  • 配置项文档:调整时序图边距、字号等渲染参数
  • 时序图 demo 页:在浏览器里直接查看渲染效果

【免费下载链接】mermaidGeneration of diagrams like flowcharts or sequence diagrams from text in a similar manner as markdown项目地址: https://gitcode.com/GitHub_Trending/me/mermaid

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 20:22:34

SSM框架作业提交批改系统:权限控制与核心流程详解

简介:基于SSM框架的作业提交与批改程序,是一套面向高校计算机专业学生的Java毕业设计项目,主要解决传统作业收发效率低、批改反馈不及时的痛点。系统按角色划分为管理员、学生和老师:学生可维护个人资料、查看成绩并提交作业&…

作者头像 李华
网站建设 2026/9/15 20:21:06

超标量处理器全面解析:从IPC到乱序执行与寄存器重命名

这篇是体系结构学习笔记系列的第六篇,聊超标量处理器(Superscalar Processor)。学到这里先要有心理准备:它和前面几篇的流水线、冒险这些基础章节不一样,超标量把流水线“时间重叠”的思路升级成了“空间并行”的思路&…

作者头像 李华
网站建设 2026/9/15 20:20:12

如何在 QEMU 中运行 Zephyr 示例应用并检查结果输出

如何在 QEMU 中运行 Zephyr 示例应用并检查结果输出 【免费下载链接】zephyr Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures. 项目地址: https://gitcode.com/GitHub_…

作者头像 李华
网站建设 2026/9/15 20:20:08

抖音无水印视频与直播批量录制:douyin-downloader 完整上手指南

抖音无水印视频与直播批量录制:douyin-downloader 完整上手指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallb…

作者头像 李华