Skip to content

ART-18940: Update Build History Dashboard UI for granular pipeline states - #207

Merged
locriandev merged 25 commits into
openshift-eng:art-build-historyfrom
locriandev:feature/art-18940-pipeline-states
Jun 4, 2026
Merged

ART-18940: Update Build History Dashboard UI for granular pipeline states#207
locriandev merged 25 commits into
openshift-eng:art-build-historyfrom
locriandev:feature/art-18940-pipeline-states

Conversation

@locriandev

@locriandev locriandev commented Jun 4, 2026

Copy link
Copy Markdown

Summary

This PR implements granular pipeline state tracking in the Build History Dashboard UI, showing separate status for Build, ITS (In-the-wild Testing System), and Release pipeline stages.

Changes

Pipeline State Display (PLRs Column)

  • Added new PLRs column (Pipeline Runs) showing three pipeline stages: Build | ITS | Release
  • Each stage displays color-coded icons:
    • 🟢 Green: Stage succeeded
    • 🔴 Red: Stage failed
    • ⚪ Gray (dimmed): Stage not run
  • Icons are clickable when pipeline URLs are available

Outcome Filtering

  • Simplified outcome dropdown to three options: Success, Failure, Pending
  • "Failure" now correctly matches all error types (BuildError, ItsError, ReleaseError)
  • Fixed frontend filtering bug where "Failure" searches returned 0 results

Build Details Page

  • All failure badges (BuildError, ItsError, ReleaseError) now use consistent red color
  • Moved hermetic field to Build Identity section with color-coded badges:
    • 🟢 Green for hermetic builds
    • 🟡 Yellow for non-hermetic builds
  • Consolidated pipeline links in Build Status section

locriandev added 25 commits June 3, 2026 12:30
…ipeline states

This commit enhances the build history dashboard to display granular build failure
stages and pipeline URLs with color-coded status indicators.

**Changes:**

1. **New Outcome States:**
   - Success (green 🟢) - All stages succeeded
   - BuildError (red 🔴) - Build PLR failed
   - ItsError (orange 🟠) - ITS checks failed
   - ReleaseError (yellow 🟡) - Release pipeline failed
   - Pending (gray ⏳) - Build in progress
   - Maintains backward compatibility with old success/failure/pending values

2. **Table Column Changes:**
   - Removed separate "PLR" and "ITS" columns
   - Added new "PLRs" column showing all three pipeline stages with icons:
     * Build pipeline (red/green icon)
     * ITS pipeline (orange/green icon)
     * Release pipeline (yellow/green icon)
   - Icons are clickable links to respective pipeline runs
   - Gray icons (⚪) indicate pipeline stages not run
   - Tooltips on hover explain pipeline status

3. **Build Details Page:**
   - Moved ec_pipeline_url and release_pipeline_url from "Additional Information"
     to "Build Links" section
   - All three pipeline URLs now displayed prominently together

4. **Backend Changes:**
   - Added release_pipeline_url field to query results in app.py

5. **UI/UX Improvements:**
   - Color-coded outcome badges for quick visual identification
   - Updated outcome filter dropdown with new states
   - Updated sorting logic to prioritize errors (BuildError > ItsError > ReleaseError)
   - Improved CSS styling for pipeline icons with hover effects

**Backward Compatibility:**
- Code handles both new (Success, BuildError, etc.) and old (success, failure, pending)
  outcome values to ensure smooth transition

Resolves: https://redhat.atlassian.net/browse/ART-18940

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
Adds a convenient 'make run' command to start the Flask development server
on http://localhost:8000. The target includes helpful messages and warnings
if GOOGLE_APPLICATION_CREDENTIALS is not set.

Usage:
  make run

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
Increased the PLRs column width from 100px to 120px to accommodate
the three pipeline icons (Build, ITS, Release) without overflow.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
The 'make run' target now accepts an optional PORT parameter to bind
to a different port. Defaults to 8000 if not specified.

Usage:
  make run              # Runs on port 8000 (default)
  PORT=5000 make run    # Runs on port 5000

Changes:
- Updated app.py to read PORT from environment variable
- Modified Makefile run target to use PORT parameter

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
**Changes:**

1. **Simplified Outcome Filters:**
   - Success (green) - matches Success or legacy 'success'
   - Failure (red) - matches ALL failure types: BuildError, ItsError,
     ReleaseError, and legacy 'failure'
   - Pending (gray) - matches Pending or legacy 'pending'

2. **Fixed Filtering Logic:**
   - Updated matchesFilters() to properly handle case-sensitive outcome
     matching with backward compatibility
   - "Failure" filter now matches BuildError, ItsError, ReleaseError, and
     legacy 'failure' states
   - Fixed issue where selecting any outcome would make all results disappear

3. **Backward Compatibility:**
   - Handles both new (Success, BuildError, etc.) and old (success, failure,
     pending) outcome values from BigQuery
   - Legacy 'success' maps to Success filter
   - Legacy 'failure' maps to Failure filter
   - Legacy 'pending' maps to Pending filter

**Rationale:**
The granular BuildError/ItsError/ReleaseError states are displayed in the
Outcome column and PLRs column for visibility, but filtering is simplified
to Success/Failure/Pending for easier use. This matches user expectation
where "show me failures" means "all types of failures."

Fixes: Filter view functionality
Related: ART-18940

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
**Problem:**
The PLRs column was incorrectly showing pipeline status. For example,
a build with outcome='failure' and ec_status=true was showing a green
ITS icon, even though ITS was never triggered because the build failed.

**Root Cause:**
The code was using ec_status field to determine ITS status, but ec_status
is a legacy field that no longer matters. The pipeline sequence is always:
Build -> ITS -> Release, and if a stage fails, subsequent stages are NOT
triggered.

**Solution:**
Rewrote PLRs column logic to properly determine pipeline status based on:

1. **New outcome states (BuildError, ItsError, ReleaseError, Success):**
   - BuildError: Build failed (🔴), ITS not run (⚪), Release not run (⚪)
   - ItsError: Build succeeded (🟢), ITS failed (🟠), Release not run (⚪)
   - ReleaseError: Build succeeded (🟢), ITS succeeded (🟢), Release failed (🟡)
   - Success: All triggered stages succeeded (🟢 for each)

2. **Legacy 'failure' state:**
   - Determine which stage failed based on pipeline URL presence:
     * No ec_pipeline_url: Build failed
     * No release_pipeline_url but has ec_pipeline_url: ITS failed
     * Has both URLs: Release failed

3. **Pipeline URL presence:**
   - If a pipeline URL is empty/null, that stage was not triggered
   - Sequence is always Build -> ITS -> Release

**Changes:**
- Removed dependency on ec_status field
- Pipeline status now correctly determined from outcome + URL presence
- Added support for Pending state (⏳ icon)
- Legacy 'failure' records now properly decoded to show which stage failed

**Testing:**
Tested with record: ose-must-gather-container-v4.13.0-202606030350.p2.g339046b
- outcome=failure, ec_status=true, no ec_pipeline_url
- Now correctly shows: Build failed (🔴), ITS not run (⚪), Release not run (⚪)

Fixes: PLRs column showing incorrect pipeline status
Related: ART-18940

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
**Problem:**
No pending builds were displayed when Pending filter was selected because
the backend was only querying for lowercase 'pending' but BigQuery now
stores capitalized 'Pending'.

**Solution:**
Updated all backend queries to include both new capitalized values
(Success, BuildError, ItsError, ReleaseError, Pending) and legacy
lowercase values (success, failure, pending) for backward compatibility.

**Changes:**
- /search endpoint: Query all outcome states (new + legacy)
- /build endpoint: Query all outcome states when searching by NVR/record_id
- /logs endpoint: Query all outcome states when fetching build logs
- /diff endpoint: Query both 'Success' and 'success' for package comparison

This ensures builds are found regardless of whether they use old or new
outcome values in BigQuery.

Fixes: No pending builds displayed when filtering by Pending
Related: ART-18940

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
**Changes:**

1. **Removed old Outcome column:**
   - The old outcome column showed simple emoji (🟢/🔴/⏳)
   - This was redundant since the PLRs column already shows detailed
     pipeline status with color-coded icons

2. **Renamed PLRs column to Outcome:**
   - The pipeline status icons (Build/ITS/Release) effectively show
     the outcome of the build
   - Column header changed from "PLRs" to "Outcome"
   - CSS class changed from plrs-td to outcome-td
   - data-column changed from "plrs" to "outcome"

3. **Column order:**
   - Name | NVR | Source | Assembly | Group | Time | Outcome | Links
   - Outcome column (formerly PLRs) moved to end before Links

**Result:**
Cleaner UI with one consolidated Outcome column showing detailed
pipeline status instead of two separate columns (Outcome + PLRs).

Related: ART-18940

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
**Changes:**

1. **Increased column width:**
   - Changed from 120px to 140px for better spacing

2. **Centered content:**
   - Added text-align: center to column header and cells

3. **Evenly distributed icons:**
   - Used flexbox with justify-content: space-evenly
   - Icons now spread evenly across the column width
   - Removed fixed margins between icons

4. **Better vertical alignment:**
   - Added align-items: center to vertically center icons
   - Adjusted padding for better visual balance

**Result:**
The three pipeline icons (Build, ITS, Release) are now evenly
distributed across the Outcome column with proper centering.

Related: ART-18940

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
**Changes:**

1. **Moved pipeline links to Build Status section:**
   - Build Pipeline, ITS Pipeline, Release Pipeline now in Build Status
   - Build Logs and ART Job also moved to Build Status
   - Removed separate "Build Links" section
   - All build-related links now consolidated in one place

2. **Added new field support:**
   - Added released_pullspec to Image Information section
   - Excluded ec_status from Additional Information (legacy field)

3. **Updated labels:**
   - Shortened labels: "Build Pipeline URL" → "Build Pipeline"
   - "ITS Pipeline URL" → "ITS Pipeline"
   - "Release Pipeline URL" → "Release Pipeline"
   - "Logs" → "Build Logs"
   - "ART Job URL" → "ART Job"

**Schema Changes Handled:**
- released_pullspec: New field for released image pullspec
- ec_status: Excluded from display (no longer exists in new schema)
- Pipeline URLs: Now all consolidated in Build Status section

**Result:**
Build Status section now shows:
- Row 1: Outcome, Engine, Architectures
- Row 2: Start Time, End Time, Duration
- Row 3: Build Pipeline, ITS Pipeline, Release Pipeline
- Row 4: Build Logs, ART Job

Related: ART-18940

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
**Problem:**
The new art-tools schema uses snake_case outcome values (build_error,
its_error, release_error) instead of PascalCase (BuildError, ItsError,
ReleaseError). Also uses 'release_pipeline' instead of 'release_pipeline_url'.
This caused:
- Wrong outcome badges (showing 'failure' instead of 'Release Error')
- Wrong pipeline icons (yellow under ITS instead of under Release)
- Filtering not working

**Root Cause:**
Code only expected PascalCase outcome values and 'release_pipeline_url' field.

**Solution:**

1. **Backend (app.py):**
   - Query for both PascalCase and snake_case outcome values
   - All endpoints now include: Success/success, BuildError/build_error,
     ItsError/its_error, ReleaseError/release_error, Pending/pending, failure

2. **Frontend (static/js/index.js):**
   - Handle both 'release_pipeline_url' and 'release_pipeline' fields
   - Normalize outcomes for comparison (convert snake_case to lowercase without underscores)
   - Update outcomeDisplay map to include snake_case variants
   - Update filtering logic to match all variants
   - Update filterDuplicatePending to recognize snake_case as completed builds

3. **CSS (static/css/build.css):**
   - Add badge classes for snake_case outcomes (badge-build_error, etc.)

4. **Templates (templates/build.html):**
   - Convert snake_case outcomes to readable format (build_error → Build Error)

**Schema Fields Handled:**
- outcome: build_error, its_error, release_error (snake_case)
- release_pipeline: (not release_pipeline_url)

**Testing:**
Verified with BigQuery record containing outcome=release_error:
- Now correctly shows "Release Error" badge
- Pipeline icons: 🟢 Build, 🟢 ITS, 🟡 Release (yellow)
- Filtering works correctly

Related: ART-18940

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
Updated rh-art-tools dependency to get the latest KonfluxBuildOutcome enum
that supports snake_case outcome values (build_error, its_error, release_error).

This fixes the backend error:
"ValueError: 'release_error' is not a valid KonfluxBuildOutcome"

Updated: rh-art-tools v2.2.1.dev4769 -> v2.2.1.dev4797 (ed6f519f)

Related: ART-18940

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
**Problem:**
For builds with outcome=release_error but no release_pipeline URL, the
Release icon was showing gray (not run) instead of yellow (failed). This
happened because the code only displayed status icons when a pipeline URL
was present.

**Root Cause:**
Icon display logic checked URL presence first, then status. When status
was 'failed' but URL was empty, it would fall through and show gray.

**Solution:**
Reversed the logic:
1. Determine status from outcome (not URL presence)
2. Always show icon based on status
3. Make icon clickable only if URL exists

**Icon Rules:**
- 🟢 Green: Success
- 🔴 Red: Build failed
- 🟠 Orange: ITS failed
- 🟡 Yellow: Release failed
- ⚪ Gray: Not run (no info available)

**Example (release_error with no ec_pipeline_url):**
- Build: 🟢 succeeded (clickable if URL)
- ITS: ⚪ not run (no URL = no info)
- Release: 🟡 failed (not clickable, no URL)

The outcome state tells us what happened, even if we don't have all URLs.

Related: ART-18940

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
**Changes:**

1. **Simplified Icon Colors:**
   - 🟢 Green: Pipeline stage succeeded
   - 🔴 Red: Pipeline stage failed (all failures now red, not orange/yellow)
   - ⚪ Gray (30% opacity): Not run or no info available
   - ⏳ Hourglass: Pipeline stage pending

   Removed orange (🟠) and yellow (🟡) - all failures are now red.

2. **Non-clickable Icon Cursor:**
   - Added 'plr-no-link' class for icons without URLs
   - Non-clickable icons show default cursor (no pointer)
   - No hover transform effect on non-clickable icons
   - Icons are only clickable when pipeline URL is available

3. **Help Dialog:**
   - Added "Outcome Column Icons" section to instructions dialog
   - Explains the three pipeline stages: Build | ITS | Release
   - Documents icon meanings (green/red/gray/hourglass)
   - Notes that icons are only clickable when URLs are available

**Example (release_error with no ITS URL):**
- Build: 🟢 (clickable)
- ITS: ⚪ (not clickable, default cursor)
- Release: 🔴 (not clickable, default cursor)

Users can click the "?" icon in the status bar to see the help dialog.

Related: ART-18940

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
…pipeline fields

**Changes:**

1. **Fixed field name:**
   - Changed from 'release_pipeline_url' to 'release_pipeline'
   - This matches the actual field name from BigQuery schema

2. **Always show pipeline fields:**
   - Build Pipeline, ITS Pipeline, and Release Pipeline now always shown
   - Display "N/A" when URL is not available
   - Previously these fields were only shown if at least one had a value

3. **Excluded from Additional Information:**
   - Added 'release_pipeline' to displayed_keys list
   - Prevents it from appearing in Additional Information section

4. **Image Information:**
   - 'released_pullspec' already correctly displayed (no changes needed)

**Result:**
Build Status section now consistently shows all three pipeline fields:
- Build Pipeline: [URL or N/A]
- ITS Pipeline: [URL or N/A]
- Release Pipeline: [URL or N/A]

This makes it clear which pipelines ran and which didn't, regardless of
whether URLs are available in the database.

Related: ART-18940

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
**Problem:**
Template error when viewing build details:
"Encountered unknown tag 'else'. Jinja was looking for 'endblock'"

**Root Cause:**
Removed the opening conditional {% if build.build_pipeline_url or ... %}
but left the closing {% endif %}, creating an orphaned endif tag.

**Fix:**
Removed the orphaned {% endif %} on line 219.

Related: ART-18940

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
**Problem:**
The outcome cell (with pipeline icons) wasn't filling the entire cell
height, leaving a black gap at the top/bottom which looked ugly.

**Root Cause:**
The <td> had default padding, and the .outcome-td flex container inside
it didn't fill 100% of the cell height.

**Fix:**
- Removed padding from td[data-column="outcome"]
- Added height: 100% and min-height: 100% to .outcome-td
- Padding now applied only to the flex container, which fills the full cell

The outcome cell now fills the entire vertical space with no gaps.

Related: ART-18940

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
**Problem:**
After previous fix, outcome cell had no padding at all, making icons
touch the cell borders. This looked worse than before.

**Fix:**
- Keep td[data-column="outcome"] with padding: 0
- Apply standard padding: 10px to .outcome-td (the flex container)
- This matches the default 10px padding on other td elements
- Removed height: 100% which was causing issues

**Result:**
Outcome cell now has proper padding matching other cells, with icons
properly spaced and centered.

Related: ART-18940

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
**Changes:**

1. **Added back simple Outcome column:**
   - Shows only ✅ (success), ❌ (failure), or ⏳ (pending)
   - All failure types (BuildError, ItsError, ReleaseError, failure) show ❌
   - Simple at-a-glance status without details

2. **Renamed pipeline icons column to PLRs:**
   - Previously named "Outcome", now correctly named "PLRs"
   - Shows detailed pipeline status: Build | ITS | Release
   - Green/Red/Gray icons with clickable links

3. **Fixed PLRs cell background:**
   - Set background-color: #2b2b2b on both td and .plrs-td
   - Cell now fills completely with grey, no black gaps
   - Matches other cells in the table

**Column Order:**
Name | NVR | Source | Assembly | Group | Time | **Outcome** | **PLRs** | Links

**Result:**
- Outcome: Quick success/failure indicator
- PLRs: Detailed pipeline breakdown with clickable links

Related: ART-18940

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
**Problem:**
JavaScript error: "Uncaught SyntaxError: Identifier 'normalizedOutcome'
has already been declared"

**Root Cause:**
normalizedOutcome was declared twice in the same function:
- Line 534: for simple outcome display
- Line 572: for pipeline status logic

**Fix:**
Removed duplicate declaration on line 572. The variable is already
available in function scope from line 534.

Related: ART-18940

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
The backend was attempting to retrieve 'release_pipeline_url' from the
KonfluxBuildRecord model, but the actual field name is 'release_pipeline'.
This caused the release pipeline URL to always be empty in the JSON response,
resulting in the third circle in the PLRs column displaying as grey (not-run)
even when a release pipeline URL existed in the database.

Changed app.py line 935 from:
  'release_pipeline_url': getattr(b, 'release_pipeline_url', '') or '',
to:
  'release_pipeline_url': getattr(b, 'release_pipeline', '') or '',

This fix ensures that when a build has a successful outcome and a release
pipeline URL, all three circles in the PLRs column (Build, ITS, Release)
will display as green.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
The frontend was using a simple lowercase string comparison to filter
outcomes after receiving results from the backend. When the user selected
"Failure (all types)", the code converted it to "failure" (lowercase) and
checked if the result's outcome matched that exact string.

However, the database stores failure outcomes as PascalCase values like
"BuildError", "ItsError", "ReleaseError" (or snake_case variants like
"build_error", "its_error", "release_error"), none of which match the
lowercase "failure" string.

This caused searches with only "Failure" selected to return 0 results,
even though the backend returned builds with BuildError/ItsError/
ReleaseError outcomes.

Fixed by:
1. Extracting the outcome matching logic from matchesFilters() into a
   separate outcomeMatchesSelection() function
2. Using this function in all three places where outcome filtering occurs:
   - performSearch() when filtering backend results
   - DOMContentLoaded when filtering initial server-rendered results
   - matchesFilters() when applying frontend filters

The outcomeMatchesSelection() function properly maps UI selections
(Success, Failure, Pending) to all their corresponding database values.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
Changes:
1. Move Outcome column to second position (right after Name)
2. Increase Outcome column width from 60px to 90px to prevent header cropping
3. Remove plrs-td class completely - it was breaking the layout with its
   flex display and fixed height properties
4. Rename "Failure (all types)" to "Failure" in the outcome dropdown for
   better clarity and brevity

The plrs-td class was using display:flex which conflicted with the table
cell layout, causing alignment issues. The PLRs column now uses the
standard table cell styling defined by th[data-column="plrs"] and
td[data-column="plrs"] rules.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
Previously, failure badges had different colors in the Build Status section:
- BuildError: red (#f44336)
- ItsError: orange (#ff9800)
- ReleaseError: yellow (#ffeb3b)

This was inconsistent and made it harder to quickly identify failures.

Now all failure types (BuildError, ItsError, ReleaseError) and their
snake_case variants (build_error, its_error, release_error) use the
same red styling for consistency.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
Changes:
1. Moved hermetic field from "Additional Information" to "Build Identity"
   section, displayed in the same row as Build Type
2. Added color-coded badge styling:
   - Green for hermetic=true (Yes)
   - Yellow for hermetic=false (No)
3. Added 'hermetic' to the displayed_keys list to prevent it from appearing
   in Additional Information section

The hermetic field is now more prominent and visually clear with the
color-coded badges making it easy to identify hermetic builds at a glance.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jun 4, 2026
@openshift-ci-robot

openshift-ci-robot commented Jun 4, 2026

Copy link
Copy Markdown

@locriandev: This pull request references ART-18940 which is a valid jira issue.

Details

In response to this:

Summary

This PR implements granular pipeline state tracking in the Build History Dashboard UI, showing separate status for Build, ITS (In-the-wild Testing System), and Release pipeline stages.

Changes

Pipeline State Display (PLRs Column)

  • Added new PLRs column (Pipeline Runs) showing three pipeline stages: Build | ITS | Release
  • Each stage displays color-coded icons:
  • 🟢 Green: Stage succeeded
  • 🔴 Red: Stage failed
  • ⚪ Gray (dimmed): Stage not run
  • ⏳ Hourglass: Stage pending
  • Icons are clickable when pipeline URLs are available
  • Moved Outcome column to second position (after Name) for better visibility

Outcome Filtering

  • Simplified outcome dropdown to three options: Success, Failure, Pending
  • "Failure" now correctly matches all error types (BuildError, ItsError, ReleaseError)
  • Fixed frontend filtering bug where "Failure" searches returned 0 results

Build Details Page

  • All failure badges (BuildError, ItsError, ReleaseError) now use consistent red color
  • Moved hermetic field to Build Identity section with color-coded badges:
  • 🟢 Green for hermetic builds
  • 🟡 Yellow for non-hermetic builds
  • Consolidated pipeline links in Build Status section

Bug Fixes

  • Fixed release_pipeline URL not being sent from backend (was using wrong field name)
  • Fixed outcome filtering when searching for failures
  • Removed broken plrs-td CSS class that was causing layout issues
  • Increased Outcome column width to prevent header cropping

Schema Compatibility

  • Added support for new snake_case outcome values (build_error, its_error, release_error) from latest art-tools
  • Maintains backward compatibility with legacy PascalCase outcomes

Testing

  • Tested with various outcome types (Success, BuildError, ItsError, ReleaseError, Pending)
  • Verified outcome filtering works correctly for all failure types
  • Confirmed PLRs column displays correctly for different pipeline states
  • Tested build details page with hermetic and non-hermetic builds

Related

  • JIRA: ART-18940
  • Updated rh-art-tools dependency to support new outcome values

🤖 Generated with Claude Code

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci

openshift-ci Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@locriandev
locriandev merged commit 6e65e16 into openshift-eng:art-build-history Jun 4, 2026
0 of 2 checks passed
@locriandev
locriandev deleted the feature/art-18940-pipeline-states branch June 4, 2026 12:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants