bk-ci icon indicating copy to clipboard operation
bk-ci copied to clipboard

【蓝盾-产品-已评审】流水线支持展示运行进度

Open fayewong-v5 opened this issue 2 years ago • 2 comments

What would you like to be added: 1、流水线详情页面,正在运行中的 step 支持展示进度

  • step 进度支持插件运行过程中自行上报
  • 上报方式:
    • run 插件:::set-progress-rate 0.3758
    • 其他插件:提供 sdk 方法上报
  • 未上报进度则不展示
  • 进度 为小于 1 的浮点数,精度4 image

2、流水线执行历史页面,正在运行中的 stage 支持展示完成度 image

  • stage 完成计算公式:(stage下已完成的步骤个数 + Sum stage下运行中的步骤上报的进度) / stage下总步骤数
  • 若 stage 下所有步骤都已经运行完成,但 stage 还在做收尾操作(如准出判定)时,进度展示 99%,直至 stage 状态完成
  • 包含 post action
  • 进度 为小于 1 的浮点数,精度4
  • 只有运行中的stage hover 时需要展示
  • 展示出正在运行的步骤:
    • 如果步骤上报了进度,展示对应的进度
    • 如果未上报,不展示进度

Why is this needed: 有些构建节点,会跑个2小时以上,如果没有进度的话,非构建人员去看的时候,会比较懵,不知道当前啥进展了

fayewong-v5 avatar Nov 07 '22 13:11 fayewong-v5

ok

EchoQT avatar Nov 15 '22 06:11 EchoQT

示例:

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)

irwinsun avatar Mar 22 '24 08:03 irwinsun