用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/coreos/ai-helpers --skill rhcos-build-pipeline命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
OCP release queries - latest versions, RHCOS images, and RPM package lists
Investigate initramfs issues - extraction, module analysis, and comparing working vs failing builds
Deduplication logic for CI pipeline failures - check Jira for existing tracking with semantic analysis
基于 SOC 职业分类
正在显示 SKILL.md
| name | rhcos-build-pipeline |
| description | RHCOS build pipeline - scheduling, two-stage builds, versionlock mechanism, and troubleshooting |
Knowledge about the RHEL CoreOS build pipeline, Jenkins jobs, and multi-architecture builds.
Related:
rhcos-repositories,rhcos-artifacts,rhcos-versions
RHCOS is built in two stages:
Stage 1: Base Image (build + build-arch jobs)
rhel-coreos-config repository (contains fedora-coreos-config as submodule)build job runs for x86_64 and triggers build-arch for other architecturesbuild-arch runs in parallel for aarch64, ppc64le, s390xbuild-arch jobs must succeed for the pipeline to continueStage 2: Node Image (build-node-image job)
openshift/os Containerfilerhel-coreos or stream-coreos image in OCP release payload| Job | Architecture | Purpose | Output |
|---|---|---|---|
build | x86_64 | Main RHCOS base image build, triggers build-arch | Bootable container (RHEL content only) |
build-arch | aarch64, ppc64le, s390x | Architecture-specific base builds (triggered by build) | Multi-arch base images |
build-node-image | all | Node image build (adds OCP packages) | rhel-coreos / stream-coreos |
release | all | Release builds | Production releases |
The build job orchestrates multi-architecture builds:
build job starts for x86_64build triggers build-arch jobs for aarch64, ppc64le, s390x in parallelbuild waits for all build-arch jobs to completebuild-arch job fails, the parent build job failsbuild-node-image proceedWhen investigating a build failure, check if the root cause is in build-arch:
# Check if build-arch jobs failed
coreos-tools jenkins builds list build-arch --status FAILURE -n 5
# Get the triggering build job number from build-arch parameters
coreos-tools jenkins builds info build-arch <build-number>
| Architecture | Description | Build Job |
|---|---|---|
x86_64 | AMD64/Intel 64-bit | build |
aarch64 | ARM 64-bit | build-arch |
ppc64le | IBM POWER little-endian | build-arch |
s390x | IBM Z mainframe | build-arch |
The build-mechanical job is the main scheduler for RHCOS base image builds:
0 10 * * *)jobs/build-mechanical.Jenkinsfile in fedora-coreos-pipelinebuild jobs sequentially for all mechanical streamsExecution Order:
c10s → c9s → rhel-10.2 → rhel-9.8 → rhel-9.6
Due to sequential execution (each build takes 2-3 hours), later streams start much later:
c10s: ~10:00 UTCrhel-9.6: ~17:00-18:00 UTC (last in queue)# View recent build-mechanical runs
coreos-tools jenkins builds list build-mechanical -n 10
# Check what streams were triggered in a specific run
coreos-tools jenkins builds log build-mechanical <build-number> | grep "Triggering build"
The FORCE parameter controls whether to rebuild even if no changes are detected.
| FORCE Value | Behavior |
|---|---|
false (default) | Skip build if no config changes detected (shows "💤 no new build") |
true | Always rebuild, even without config changes |
When FORCE is needed:
When FORCE is NOT needed:
build-mechanical job does NOT use FORCE; it relies on cosa detecting changesHow cosa detects changes:
During build-node-image, packages from the base image are versionlocked to prevent
unexpected upgrades. This is done dynamically at build time, not via static config files.
build job creates base image with packages at specific versions (e.g., NetworkManager-1.52.0-9)build-node-image runs rpm-ostree experimental compose treefile-applyYou can see this in the build logs:
Adding versionlock on: NetworkManager-1:1.52.0-9.el9_6.*
Adding versionlock on: NetworkManager-tui-1:1.52.0-9.el9_6.*
...
If a new package in the repos requires a newer version of a locked package, DNF fails:
Error: package NetworkManager-ovs-1:1.52.0-10 requires NetworkManager = 1:1.52.0-10,
but package NetworkManager-1:1.52.0-9 is filtered out by exclude filtering
Typical scenario:
build-node-image fails because version X is locked and X+1 is excludedFix: Rebuild the base image (build job) to pick up the newer package version:
coreos-tools jenkins jobs build build --param STREAM=rhel-9.6
# List all jobs
coreos-tools jenkins jobs list
# Get job info (health, last builds)
coreos-tools jenkins jobs info <job-name>
# Trigger a build
coreos-tools jenkins jobs build <job-name> --param STREAM=<stream>
# Trigger a forced build (bypass "no changes" detection)
coreos-tools jenkins jobs build <job-name> --param STREAM=<stream> --param FORCE=true
# View build queue
coreos-tools jenkins queue list
# List nodes
coreos-tools jenkins nodes list