From 8ae15f7b83a547a7bd42bbebcb088681a035e69e Mon Sep 17 00:00:00 2001 From: Zhongwei Li Date: Sat, 29 Nov 2025 18:16:32 +0800 Subject: [PATCH] Initial commit --- .claude-plugin/plugin.json | 12 +++++ README.md | 3 ++ commands/pipeline_status.md | 96 +++++++++++++++++++++++++++++++++++++ plugin.lock.json | 45 +++++++++++++++++ 4 files changed, 156 insertions(+) create mode 100644 .claude-plugin/plugin.json create mode 100644 README.md create mode 100644 commands/pipeline_status.md create mode 100644 plugin.lock.json diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..eb9fb9a --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,12 @@ +{ + "name": "pipeline-status", + "description": "Summarize the status of the RHCOS pipeline using Slack", + "version": "0.0.0-2025.11.28", + "author": { + "name": "coreos", + "email": "zhongweili@tubi.tv" + }, + "commands": [ + "./commands" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..f53861e --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# pipeline-status + +Summarize the status of the RHCOS pipeline using Slack diff --git a/commands/pipeline_status.md b/commands/pipeline_status.md new file mode 100644 index 0000000..bbe9164 --- /dev/null +++ b/commands/pipeline_status.md @@ -0,0 +1,96 @@ +# CoreOS Pipeline Status Analysis + +Analyze CoreOS pipeline build status for a specific date using the containerized CoreOS pipeline status tool. + +## Usage +- `coreos_pipeline_status` - Analyze builds for today's date +- `coreos_pipeline_status YYYY-MM-DD` - Analyze builds for specific date + +## Implementation + +### Step 1: Execute Pipeline Status Query +```bash +# Set date parameter (defaults to current date) +date=${1:-$(date +%Y-%m-%d)} +podman run --rm --env-file .env quay.io/cverna/coreos-pipeline-status:latest --date $date --pretty +``` + +### Step 2: Analysis Requirements +1. **Build Summary**: Count total builds, failures, and successes +2. **Version Breakdown**: Use exact version names from Jenkins messages (e.g., rhel-10.1, 4.21-9.6, 4.20-10.1) +3. **Job Type Analysis**: Break down by job type (architecture builds, release builds, node-image builds) +4. **Architecture Analysis**: Break down by architecture (x86_64, ppc64le, s390x, aarch64) +5. **Failure Rate**: Calculate overall failure percentage +6. **Notable Issues**: Highlight patterns or user comments about failures + +### Step 3: Report Generation +Create a concise summary including: + +#### Required Sections: +- **Total Messages**: Count of pipeline notifications +- **Build Status Overview**: Success/failure counts with emoji indicators +- **Builds by Version & Job Type**: Version-specific breakdowns using exact Jenkins message names +- **Job Type Breakdown**: Success/failure rates by job type (arch builds, releases, node-image builds) +- **Architecture Breakdown**: Per-architecture success/failure rates +- **Notable Issues**: Key problems or patterns observed + +#### Status Indicators: +- 🔥 Failed builds (red color in Slack) +- ✨ Successful builds (green color in Slack) +- 🚅 Release builds (yellow/orange color in Slack) + +#### Formatting Requirements: +- Use markdown headers and bullet points +- Include build numbers and Jenkins url links +- Calculate and display failure percentages +- Highlight architecture-specific issues (e.g., 100% ppc64le failures) + +### Step 4: Slack Summary Generation + +Finish the status with a short slack message to highlight the failures, see example below: + +``` +🚨 CoreOS Pipeline Summary - 2025-09-17 +21% failure rate (3/14 builds failed) + +node-image builds: +- 4.21-10.1: 0/1 🔥 +- 4.21-9.6: 0/2 🔥 +- 4.20-10.1: 1/1 ✅ + +RHCOS & Release builds: +- rhel-10.1: 5/5 ✅ +- 4.15-9.2: 5/5 ✅ +``` + +#### Summary Guidelines: +- Lead with overall failure percentage +- Highlight job type specific failures (e.g., node-image builds vs arch builds) +- Use exact version names from Jenkins messages +- Group by job type when patterns emerge (e.g., all node-image builds failing) +- End with builds by version table using ✅/🔥 indicators +- Keep under 10 lines for urgent visibility +- Use emojis for quick visual scanning + +### Step 5: Post Summary to Slack + +After generating the analysis and summary, post the summary to the Slack channel: + +```bash +podman run --rm --env-file .env quay.io/cverna/coreos-pipeline-status:latest --summary "SLACK_SUMMARY_TEXT" +``` + +Example: +```bash +podman run --rm --env-file .env quay.io/cverna/coreos-pipeline-status:latest --summary "🚨 CoreOS Pipeline Summary - 2025-09-17 +21% failure rate (3/14 builds failed) + +node-image builds: +- 4.21-10.1: 0/1 🔥 +- 4.21-9.6: 0/2 🔥 +- 4.20-10.1: 1/1 ✅ + +RHCOS & Release builds: +- rhel-10.1: 5/5 ✅ +- 4.15-9.2: 5/5 ✅" +``` \ No newline at end of file diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..1fcfd5c --- /dev/null +++ b/plugin.lock.json @@ -0,0 +1,45 @@ +{ + "$schema": "internal://schemas/plugin.lock.v1.json", + "pluginId": "gh:coreos/ai-helpers:plugins/pipeline-status", + "normalized": { + "repo": null, + "ref": "refs/tags/v20251128.0", + "commit": "33fffe772454bae604947f5bfc70cf29c700b767", + "treeHash": "eb14da2d28c96abad419817d08fcd3c0ba7fe56c4893d0d1183462c2bd7803d0", + "generatedAt": "2025-11-28T10:15:46.538128Z", + "toolVersion": "publish_plugins.py@0.2.0" + }, + "origin": { + "remote": "git@github.com:zhongweili/42plugin-data.git", + "branch": "master", + "commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390", + "repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data" + }, + "manifest": { + "name": "pipeline-status", + "description": "Summarize the status of the RHCOS pipeline using Slack", + "version": null + }, + "content": { + "files": [ + { + "path": "README.md", + "sha256": "f42248394e14f8de2960ea6c51c2ad8cf121e7399f93cbc630c1914c2972878d" + }, + { + "path": ".claude-plugin/plugin.json", + "sha256": "f07af0fd55908ed78f1b84edc5d1c88fc57ed4f2f8ad0a3e071e64cdbdc8b631" + }, + { + "path": "commands/pipeline_status.md", + "sha256": "640f42a6653f65cfe3cbb86a3a8a2290e43e8c098ebf20121e57530c8b400d6a" + } + ], + "dirSha256": "eb14da2d28c96abad419817d08fcd3c0ba7fe56c4893d0d1183462c2bd7803d0" + }, + "security": { + "scannedAt": null, + "scannerVersion": null, + "flags": [] + } +} \ No newline at end of file