Skip to content

Artifact Timeline Dashboard

time1 lane per stage- publication in registry- deployment in environment as service1 point per event on the stage(publishing, deployment,...)tooltip with detailabout the eventFor deployment the stageis named with environment + servicelatest versionor tag at the stageAvg duration of promotionfrom previous stageFrequency of events(includes ~ Dora Deployment Frequency)1 line per artifact'sversion or tagcolor = f(latest stage)name of the artifact

Overview

The Artifact Timeline Dashboard provides visualization capabilities for tracking package version lifecycles throughout their development and deployment journey. This dashboard enables users to monitor the progression of artifacts across various stages including packaging, publication, signing, and service deployment.

Features

  • Individual timeline visualization for each package version (artifact = package + version)
  • Interactive tooltips displaying detailed event information on hover
  • Color-coded points and lines based on the latest stage reached by each artifact
  • Metrics based on the selected dashboard time range
  • Comprehensive per-stage metrics including:
    • Stage identification
      • Action/predicate of the package
      • Environment and service name concatenation for service deployments
    • Event frequency metrics (applicable for DORA metrics: Deployment Frequency)
    • Average transition duration from previous stage, facilitating promotion time analysis
    • Latest artifact version per stage, providing visibility into current deployed versions across environments
    • Timestamp of the most recent event per stage, highlighting latest activity

Implementation

The dashboard utilizes the following SQL query to retrieve artifact timeline data:

sql
SELECT timestamp,
  predicate as action,
  predicate as stage,
  payload -> 'subject' ->> 'id' as artifact_id
FROM cdviz.cdevents_lake
WHERE $__timeFilter(timestamp)
  AND payload -> 'subject' ->> 'id' SIMILAR TO 'pkg:\${artifact_fnames:raw}(@|\\?)%'
  AND subject = 'artifact'
  AND predicate = ANY(ARRAY['published', 'signed'])

UNION ALL

SELECT timestamp,
  predicate as action,
  (payload -> 'subject' -> 'content' -> 'environment' ->> 'id') || '\n' || (payload -> 'subject' ->> 'id') as stage,
  payload -> 'subject' -> 'content' ->> 'artifactId' as artifact_id
FROM cdviz.cdevents_lake
WHERE $__timeFilter(timestamp)
  AND payload -> 'subject' -> 'content' ->> 'artifactId' SIMILAR TO 'pkg:\${artifact_fnames:raw}(@|\\?)%'
  AND subject = 'service'
  AND predicate = ANY(ARRAY['deployed', 'upgraded', 'rolledback'])

Technical Notes

  • Package identification follows the Package URL (PURL) specification
  • For OCI packages, version identification uses:
    • Package digest when available (e.g., pkg:oci/cdviz-db@sha256:1234567890abcdef?repository_url=ghcr.io/cdviz-dev)
    • Package tag as fallback when digest is unavailable (e.g., pkg:oci/cdviz-db?repository_url=ghcr.io/cdviz-dev&tag=0.1.0)

Source Code References