Lesson 08 · 发版

发布链路:两种任务,一道闸门

这是副作用最重的一条链。写正文之前必须先有一个可以安全操作的环境。

📋 这一课还没写正文,这是大纲

课 01–04 已经出正文,够你把项目跑起来、看懂一次请求、看懂页面和状态。 05–09 属于「能独立干活」阶段,需要一个可以安全触发的 Jenkins job 和一个可以安全提交的 SVN 工作副本才能写得可靠。

下面的目录不是占位符 —— 每一条都已经在源码里核对过入口, 你现在就可以照着自己去读

为什么排在这个位置

发版是这个岗位最不能出错的一件事 —— 它同时动本地磁盘、远端仓库和构建服务器,而且没有回滚按钮

排在最后第二位,是因为它需要前面所有课的基础:进程边界(子进程干活)、请求链路(Jenkins API)、凭据(课 07)、状态(任务队列)。

前置

会讲什么

  1. 发布页的卡片是怎么来的。src/api/task/index.tsDevCardList() / ResCardList() / ProdCardList() / AlphaCardList(),每张卡片带 type(SVN 还是 Jenkins)
  2. 全局闸门。views/Option/index.vue:89-111 —— 任何构建在跑,所有卡片都点不动,包括纯本地的 SVN 提交
  3. SVN 支路。complieproject_svn() 列改动 → FileRestoreDialog.vue 逐个勾选 → svnCommit()。这条有确认步骤,相对安全
  4. Jenkins 支路。startBuild() 触发 → taskStore 记一笔 → checkstartBuild() 轮询。没有确认步骤,点了就走
  5. Jenkins 封装的四块。utils/extend/jenkins/ 的 client / build / monitor / config —— 这是项目里分层最整齐的一处,值得当范本
  6. job 名是怎么算出来的。JOB_TYPES 里的默认名 → initEnv() 的渠道替换 → getJobOptions() 的覆盖
  7. 失败怎么停。stopBuild(jobName, buildNumber)、重新登录重置 taskStore、以及「Jenkins 那边已经结束但客户端还在转」的处理顺序
  8. 三档评级。jenkins 模块的分层(✅)、全局闸门(⚠️ 粒度太粗但可理解)、裸 setInterval 无超时上限(❌)、Jenkins 型无二次确认(❌)

学完之后你应该能

在正文出来之前,你可以先做这些