bk-ci
bk-ci copied to clipboard
【蓝盾-产品-已评审】流水线支持展示运行进度
What would you like to be added: 1、流水线详情页面,正在运行中的 step 支持展示进度
- step 进度支持插件运行过程中自行上报
- 上报方式:
- run 插件:::set-progress-rate 0.3758
- 其他插件:提供 sdk 方法上报
- 未上报进度则不展示
- 进度 为小于 1 的浮点数,精度4
2、流水线执行历史页面,正在运行中的 stage 支持展示完成度
- stage 完成计算公式:(stage下已完成的步骤个数 + Sum stage下运行中的步骤上报的进度) / stage下总步骤数
- 若 stage 下所有步骤都已经运行完成,但 stage 还在做收尾操作(如准出判定)时,进度展示 99%,直至 stage 状态完成
- 包含 post action
- 进度 为小于 1 的浮点数,精度4
- 只有运行中的stage hover 时需要展示
- 展示出正在运行的步骤:
- 如果步骤上报了进度,展示对应的进度
- 如果未上报,不展示进度
Why is this needed: 有些构建节点,会跑个2小时以上,如果没有进度的话,非构建人员去看的时候,会比较懵,不知道当前啥进展了
ok
示例:
Batch Script插件演示
@echo off
for /l %%x in (1, 1, 99) do (
REM 执行一个必出错的doNothingAndCatchErrlrToNULL 命令,只为了演示休眠一秒,并将错误抛给NULL,并exit 0
cmd.exe /c "waitfor doNothingAndCatchErrlrToNULL /t 1 2>NULL || exit 0"
if %%x LSS 10 (
echo ::set-progress-rate 0.0%%x
) else (
echo ::set-progress-rate 0.%%x
)
)
exit 0
Shell Bash 类插件演示
for i in {1..99}
do
# 演示bash如何转换1%~99%
rate=$(printf "%.2f" `echo "$i * 0.01" | bc`)
echo "::set-progress-rate $rate"
sleep 1
done
Python3 演示
import time
import sys
print('演示进度条', flush = True)
for num in range(1,99):
a = num * 0.01
time.sleep(1)
print ('::set-progress-rate %.2f' % a, flush = True)