input 是什么
在流水线中途请求人工确认或收集输入:可限定提交者、设置确认文案与参数,用于生产发布与高风险操作确认。等待期间会阻塞当前阶段,必须配合超时避免无限等待;提交者过滤只影响谁能点击按钮,不等于完整审批系统,审批记录仍要进审计链。它的价值在于把「人判断」这一步变成流水线里的显式节点,而不是散落在聊天里的口头确认。
基本信息
| 写法 | input(message, ok, submitter, parameters) |
|---|---|
| 阻塞 | 等待响应期间阻塞当前阶段 |
| 超时 | 用 options timeout 包裹,超时即终止 |
| 场景 | 生产发布、高风险操作、参数补录 |
| 权限 | submitter 限定可点击的用户或组 |
| 按钮文案 | ok 参数自定义确认按钮文字 |
| 记录 | 审批要进审计链,与部署记录互相关联 |
典型使用场景
- 生产发布确认:变更窗口内人工检查后放行
- 高风险操作:数据修复、账户变更等需二次确认
- 参数补录:运行时输入版本号或变更单号
- 灰度放量确认:自动化验证通过后人工批准继续
- 紧急通道:break-glass 流程中记录审批人与时间
- 值班交接:夜间批次的发布交由值班人员确认
- 超时演练:定期验证审批超时路径真的会终止而不是卡住
带超时的审批
带超时的审批
stage('approve') {
options { timeout(time: 2, unit: 'HOURS') } // 审批超时上限
steps {
input message: '确认发布到生产?', ok: '发布', submitter: 'release-team'
}
}要素与含义
| 要素 | 含义 | 注意 |
|---|---|---|
| message | 提示文案 | 写清楚影响与回退方式 |
| submitter | 可批准的用户或组 | 与发布职责对齐 |
| ok | 确认按钮文字 | 避免与取消混淆 |
| parameters | 运行时收集输入 | 值会进构建记录,勿采集敏感信息 |
| 超时 | 超时后的处理行为 | 终止或按策略安全回退 |
没有超时的 input 会长期阻塞:审批窗口要显式声明,超时行为要能安全终止或回退。
审批记录要进审计链:谁在何时批准了哪次发布,与部署记录关联,事后可查。
审批窗口设多长要与发布节奏匹配:太短来不及评审,太长等于没有约束。
input 收集的值会写进构建记录:密码类输入不要走这里,改用凭据绑定。