Skip to content

USHIFT-7041: MicroShift CI Doctor directory restructure - #181

Merged
openshift-merge-bot[bot] merged 8 commits into
openshift-eng:mainfrom
ggiguash:ci-doctor-dir-restructure
Jun 9, 2026
Merged

USHIFT-7041: MicroShift CI Doctor directory restructure#181
openshift-merge-bot[bot] merged 8 commits into
openshift-eng:mainfrom
ggiguash:ci-doctor-dir-restructure

Conversation

@ggiguash

@ggiguash ggiguash commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

New Directory Structure

image

Summary by CodeRabbit

Release Notes

  • Documentation

    • Updated CI skill documentation to reflect changes in artifact organization and file naming conventions used throughout the workflow.
  • Chores

    • Reorganized internal CI artifacts into dedicated subdirectories (jobs/ and bugs/) with consistent, deterministic naming patterns.
    • Updated CI automation scripts to support the new artifact directory structure and naming scheme for improved artifact management.

@openshift-ci

openshift-ci Bot commented Jun 8, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: ggiguash

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

The pull request process is described 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

@coderabbitai

coderabbitai Bot commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Walkthrough

This PR systematically refactors the CI Doctor workflow's on-disk artifact organization by consolidating flat analyze-ci-* filenames into a hierarchical structure with jobs/ and bugs/ subdirectories, updating all dependent scripts and skill documentation to use the new paths and filenames.

Changes

Artifact Directory Structure Refactoring

Layer / File(s) Summary
Job Orchestration & Discovery
plugins/shared/scripts/doctor.sh, plugins/shared/scripts/aggregate.py
The main doctor script now creates and populates ${WORKDIR}/jobs/ with deterministic per-release job JSON and report filenames. The aggregate script discovers and summarizes per-job reports from the new jobs layout, writing release and PR summaries to jobs/release-VERSION-summary.json and jobs/prs-summary.json.
Bug Candidate & Match Discovery
plugins/microshift-ci/scripts/search-bugs.py
The bug search script discovers job reports from jobs/ directory patterns and writes bug candidates, results, and Jira mapping files under the new bugs/ directory structure with updated filenames (bug-candidates-SOURCE.json, bug-matches-SOURCE.json, bug-results-TAG.json).
HTML Report Assembly
plugins/shared/scripts/create-report.py
The report generation script discovers summaries and bug mappings from the new jobs/ and bugs subdirectories, deduplicates open bugs directly from mapping files, and generates the renamed HTML report as report-COMPONENT-ci-doctor.html with a bugs/bug-matches-summary.json output.
Session Management & Artifact Download
plugins/microshift-ci/scripts/continue-session.sh
The session script downloads CI artifacts while preserving the jobs/ and bugs/ directory structure, derives release and PR metadata from the new filename patterns, and detects the renamed HTML report file.
Core Doctor Skill Documentation
plugins/microshift-ci/skills/doctor/SKILL.md, plugins/lvms-ci/skills/doctor/SKILL.md
Skill specs for the doctor workflow updated to document the new artifact paths under <WORKDIR>/jobs/ for job discovery and aggregation, under <WORKDIR>/bugs/ for bug correlation, and the renamed final report report-{component}-ci-doctor.html.
Create Bugs Workflow Documentation
plugins/microshift-ci/skills/create-bugs/SKILL.md
Skill spec for create-bugs workflow updated to document per-source bug candidates and Jira mapping files under <WORKDIR>/bugs/, merged candidates, results, and report generation from the new structure.
Dependent Workflow Documentation
plugins/microshift-ci/skills/close-stale-bugs/SKILL.md, plugins/microshift-ci/skills/fix-test-bugs/SKILL.md, plugins/microshift-ci/skills/doctor-refresh/SKILL.md, plugins/microshift-ci/skills/continue-session/SKILL.md
Skill specs for downstream workflows updated to reference the new artifact locations: bug mappings under bugs/, candidates under bugs/, and job analysis files under jobs/.
User-Facing Documentation
docs/claude/microshift-ci.md
User documentation updated to reference the new merged bug report filename report-create-bugs.txt instead of the prior analyze-ci-create-bugs-merged.txt.

🎯 3 (Moderate) | ⏱️ ~20 minutes

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 markdownlint-cli2 (0.22.1)
docs/claude/microshift-ci.md

markdownlint-cli2 v0.22.1 (markdownlint v0.40.0)
Finding: docs/claude/microshift-ci.md !node_modules/** !two-node-toolbox/**
Linting: 1 file(s)
Summary: 0 error(s)
AggregateError: Unable to import module 'markdownlint-cli2-formatter-pretty'.
at importModule (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:90:11)
at async Promise.all (index 0)
at async outputResults (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:838:9)
at async main (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:1029:5)
at async file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2-bin.mjs:14:22 {
[errors]: [
Error: Cannot find module 'markdownlint-cli2-formatter-pretty'
Require stack:
- /usr/local/lib/node_modules/markdownlint-cli2/node_modules/markdownlint/lib/resolve-module.cjs
at Module._resolveFilename (node:internal/modules/cjs/loader:1476:15)
at wrapResolveFilenam

... [truncated 1076 characters] ...

node:internal/modules/esm/resolve:271:11)
at moduleResolve (node:internal/modules/esm/resolve:861:10)
at defaultResolve (node:internal/modules/esm/resolve:988:11)
at #cachedDefaultResolve (node:internal/modules/esm/loader:697:20)
at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:714:38)
at ModuleLoader.resolveSync (node:internal/modules/esm/loader:746:52)
at #resolve (node:internal/modules/esm/loader:679:17)
at ModuleLoader.getOrCreateModuleJob (node:internal/modules/esm/loader:599:35)
at node:internal/modules/esm/loader:628:32
at TracingChannel.tracePromise (node:diagnostics_channel:362:14) {
code: 'ERR_MODULE_NOT_FOUND',
url: 'file:///markdownlint-cli2-formatter-pretty'
}
]
}

plugins/lvms-ci/skills/doctor/SKILL.md

markdownlint-cli2 v0.22.1 (markdownlint v0.40.0)
Finding: plugins/lvms-ci/skills/doctor/SKILL.md !node_modules/** !two-node-toolbox/**
Linting: 1 file(s)
Summary: 0 error(s)
AggregateError: Unable to import module 'markdownlint-cli2-formatter-pretty'.
at importModule (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:90:11)
at async Promise.all (index 0)
at async outputResults (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:838:9)
at async main (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:1029:5)
at async file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2-bin.mjs:14:22 {
[errors]: [
Error: Cannot find module 'markdownlint-cli2-formatter-pretty'
Require stack:
- /usr/local/lib/node_modules/markdownlint-cli2/node_modules/markdownlint/lib/resolve-module.cjs
at Module._resolveFilename (node:internal/modules/cjs/loader:1476:15)
at wrapReso

... [truncated 1086 characters] ...

node:internal/modules/esm/resolve:271:11)
at moduleResolve (node:internal/modules/esm/resolve:861:10)
at defaultResolve (node:internal/modules/esm/resolve:988:11)
at #cachedDefaultResolve (node:internal/modules/esm/loader:697:20)
at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:714:38)
at ModuleLoader.resolveSync (node:internal/modules/esm/loader:746:52)
at #resolve (node:internal/modules/esm/loader:679:17)
at ModuleLoader.getOrCreateModuleJob (node:internal/modules/esm/loader:599:35)
at node:internal/modules/esm/loader:628:32
at TracingChannel.tracePromise (node:diagnostics_channel:362:14) {
code: 'ERR_MODULE_NOT_FOUND',
url: 'file:///markdownlint-cli2-formatter-pretty'
}
]
}

plugins/microshift-ci/skills/doctor/SKILL.md

markdownlint-cli2 v0.22.1 (markdownlint v0.40.0)
Finding: plugins/microshift-ci/skills/doctor/SKILL.md !node_modules/** !two-node-toolbox/**
Linting: 1 file(s)
Summary: 0 error(s)
AggregateError: Unable to import module 'markdownlint-cli2-formatter-pretty'.
at importModule (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:90:11)
at async Promise.all (index 0)
at async outputResults (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:838:9)
at async main (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:1029:5)
at async file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2-bin.mjs:14:22 {
[errors]: [
Error: Cannot find module 'markdownlint-cli2-formatter-pretty'
Require stack:
- /usr/local/lib/node_modules/markdownlint-cli2/node_modules/markdownlint/lib/resolve-module.cjs
at Module._resolveFilename (node:internal/modules/cjs/loader:1476:15)
at wr

... [truncated 1092 characters] ...

node:internal/modules/esm/resolve:271:11)
at moduleResolve (node:internal/modules/esm/resolve:861:10)
at defaultResolve (node:internal/modules/esm/resolve:988:11)
at #cachedDefaultResolve (node:internal/modules/esm/loader:697:20)
at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:714:38)
at ModuleLoader.resolveSync (node:internal/modules/esm/loader:746:52)
at #resolve (node:internal/modules/esm/loader:679:17)
at ModuleLoader.getOrCreateModuleJob (node:internal/modules/esm/loader:599:35)
at node:internal/modules/esm/loader:628:32
at TracingChannel.tracePromise (node:diagnostics_channel:362:14) {
code: 'ERR_MODULE_NOT_FOUND',
url: 'file:///markdownlint-cli2-formatter-pretty'
}
]
}

  • 5 others

Comment @coderabbitai help to get the list of available commands and usage tips.

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jun 8, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@plugins/microshift-ci/skills/create-bugs/SKILL.md`:
- Line 4: Update the SKILL.md frontmatter description for the create-bugs skill
to be action-oriented (start with "Use when…") instead of generic prose; locate
the current description key in SKILL.md (the line containing description: Create
JIRA bugs from CI failure reports...) and replace it with a concise "Use when…"
sentence that tells when to run the skill (for example: "Use when a CI failure
report should create or deduplicate JIRA bugs across releases; runs in dry‑run
by default"). Ensure the new text preserves the existing intent: CI failure →
create JIRA bugs with cross-release deduplication and dry-run default.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 023f9778-2424-438e-b420-f98caadd74a2

📥 Commits

Reviewing files that changed from the base of the PR and between f3ef24e and 4b84d5d.

📒 Files selected for processing (13)
  • docs/claude/microshift-ci.md
  • plugins/lvms-ci/skills/doctor/SKILL.md
  • plugins/microshift-ci/scripts/continue-session.sh
  • plugins/microshift-ci/scripts/search-bugs.py
  • plugins/microshift-ci/skills/close-stale-bugs/SKILL.md
  • plugins/microshift-ci/skills/continue-session/SKILL.md
  • plugins/microshift-ci/skills/create-bugs/SKILL.md
  • plugins/microshift-ci/skills/doctor-refresh/SKILL.md
  • plugins/microshift-ci/skills/doctor/SKILL.md
  • plugins/microshift-ci/skills/fix-test-bugs/SKILL.md
  • plugins/shared/scripts/aggregate.py
  • plugins/shared/scripts/create-report.py
  • plugins/shared/scripts/doctor.sh

Comment thread plugins/microshift-ci/skills/create-bugs/SKILL.md
@openshift-ci openshift-ci Bot added the ready-for-human-review Indicates a PR has been reviewed by automated tools and is ready for human review label Jun 8, 2026
@pmtk

pmtk commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Jun 9, 2026
@openshift-merge-bot
openshift-merge-bot Bot merged commit 8131026 into openshift-eng:main Jun 9, 2026
6 checks passed
@ggiguash
ggiguash deleted the ci-doctor-dir-restructure branch June 9, 2026 15:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. lgtm Indicates that a PR is ready to be merged. ready-for-human-review Indicates a PR has been reviewed by automated tools and is ready for human review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants