#!/usr/bin/env python3
import os
import gitlab
from tabulate
import tabulate
gt = gitlab.Gitlab(url=
"https://gitlab.inria.fr " , private_token=os.getenv(
"PIPELINE_STATS_TOKEN" ), api_version=
"4" )
prj = gt.projects.get(
"coq/coq" )
pipeline_id=os.getenv(
"CI_PIPELINE_ID" )
pipeline = prj.pipelines.get(pipeline_id)
def pptime(seconds):
if seconds >=
60 *
60 :
hours = seconds / (
60 *
60 )
minutes = (seconds % (
60 *
60 )) /
60
return f
"{hours:.0f}h {minutes:.0f}min"
elif seconds >=
60 :
minutes = seconds /
60
rest = seconds %
60
return f
"{minutes:.0f}min {rest:.0f}s"
else :
return f
"{seconds:.0f}s"
def ppsize(size, decimal_places=
2 ):
for unit
in [
'B' ,
'KiB' ,
'MiB' ,
'GiB' ,
'TiB' ,
'PiB' ]:
if size <
1024 .
0 or unit ==
'PiB' :
break
size /=
1024 .
0
return f
"{size:.{decimal_places}f} {unit}"
res=[]
total_time=
0 .
0
total_size=
0
total_log_size=
0
for j
in pipeline.jobs.list(iterator=
True ):
if j.duration
is None :
continue # non-finished job, eg bench or pipeline stats
size=
0
log_size=
0
if 'artifacts' in j.attributes:
for art
in j.attributes[
'artifacts' ]:
if art[
'file_type' ] ==
'trace' :
log_size += art[
'size' ]
else :
size += art[
'size' ]
res += [[j.name, j.duration, size, log_size, j.id]]
total_time += j.duration
total_size += size
total_log_size += log_size
res += [[
'total' , total_time, total_size, total_log_size, pipeline_id]]
def sortkey(v):
return v[
1 ]
ppres = [ [v[
0 ], pptime(v[
1 ]), ppsize(v[
2 ]), ppsize(v[
3 ]), v[
4 ]]
for v
in sorted(res, key=sortkey) ]
print(tabulate(ppres, headers=[
'name' ,
'duration' ,
'artifacts size' ,
'log size' ,
'id' ],
tablefmt='orgtbl' ))
Messung V0.5 in Prozent C=99 H=97 G=97
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-07)
¤
*© Formatika GbR, Deutschland