发布申请
介绍
创建和执行发布。每一次发布都对应一个发布申请单,申请单记录了发布的应用、环境、版本、目标主机以及审核、发布过程与结果,是完整的发布审计记录。

列表上方可以按发布环境、应用名称、申请时间过滤,也可以按状态(待审核、待发布、发布成功、发布异常等)快速切换。
新建申请
点击 新建申请 后先选择要发布的应用和环境(即一个发布配置),根据发布方式的不同,对应创建发布申请的配置项也不同。
常规发布

- 申请标题:申请单的名称,建议包含版本或变更说明。
- 选择分支 / 标签 / 版本:
Branch:选择分支并指定Commit ID,默认展示最近的提交记录;Tag:选择仓库中的标签;构建仓库:选择 构建仓库 中已经构建完成的版本,发布时跳过构建阶段。
- 目标主机:本次申请单要发布的主机(从发布配置添加的目标主机中选择),可以通过创建多个发布申请单,选择主机分批发布。
- 备注信息:可选。
- 定时发布:设置后到达指定时间自动发布,会有最多 1 分钟的延迟;如果开启了审核则需要先通过审核。
自定义发布
- 申请标题:申请单的名称。
- 环境变量(SPUG_RELEASE):可以在自定义脚本中引用该变量,用于设置本次发布相关的动态变量,可在发布配置添加的动作脚本中通过
$SPUG_RELEASE来使用该值。 - 上传数据:当发布配置中包含数据来源为
发布时上传的数据传输动作时,在此上传文件。 - 目标主机 / 备注信息 / 定时发布:同常规发布。
审核
如果发布配置中启用了审核功能,则创建的申请单状态为 待审核,具有 审核申请 权限的用户点击 审核 可以通过或驳回(需填写驳回原因),审核结果会通过系统通知和发布配置中设置的消息通知发送。被驳回的申请可以编辑后重新提交。
执行发布
状态为 待发布 的申请单点击 发布 后进入发布控制台,可以实时查看服务端构建阶段与每台目标主机的执行输出,点击主机名称旁的图标可以直接打开该主机的 Web 终端。

对于发布异常或部分主机失败的申请单,再次点击 发布 时可以选择发布方式:

- 全量:发布所有主机(包含已成功的)。
- 补偿:仅发布上次发布失败的主机。
- 灰度:从目标主机中选择指定的主机发布,先验证部分主机再全量,发布完成后申请单状态为
灰度成功,之后可以继续对剩余主机执行发布。
回滚
发布成功的申请单可以点击 回滚,会基于历史版本创建一个新的回滚申请单,详细机制见 回滚机制。
发布记录的删除
可以发现发布申请在发布后无法被单个直接删除,这并不是我们偷懒,而是故意设计成这样的。以我们以往的经验来看发布记录在某些情况下是重要的排查问题的线索, 例如,某用户在未充分测试的情况下通过 Spug 发布一个应用的新版本,很不巧这个新版本上线后发现了问题造成了服务不可用的情况,出于一些原因该用户把这个发布记录悄悄的删除了, 那么这个行为可能就会在排查问题的时候造成一定的困扰。所以我们只设计了根据时间和保留个数两个维度来 批量删除,避免可能遇到的上述问题。
状态说明
| 状态 | 说明 |
|---|---|
| 待审核 | 发布配置开启了审核,等待审核 |
| 已驳回 | 审核未通过,可编辑后重新提交 |
| 待发布 | 可以执行发布 |
| 发布中 | 正在执行发布 |
| 发布成功 | 所有目标主机发布成功 |
| 灰度成功 | 选择的部分主机发布成功,剩余主机未发布 |
| 发布异常 | 有主机发布失败,可以补偿或全量重新发布 |
提示
- 通过 Webhook 自动发布 触发的申请单类型为
Webhook触发,标题会自动取自提交信息的前 20 个字符(Tag 触发时为 Tag 名)。 - 发布申请的时间默认展示为相对时间,鼠标悬停可查看完整时间。