Butane merge v2#2235
Conversation
…able openshift/v4.16: Stabilize 4.16.0 spec and add openshift 4.17-experimental spec
docs/release-notes.md: update for release Butane 0.21.0
Dockerfile: update to Fedora 40
Step down to non expermental features Additionaly remove GRUB password support See: https://issues.redhat.com/browse/MCO-630
Stabilize openshift v4.17.0 spec
Release Butane 0.22.0
Sync repo templates ⚙
Sync repo templates ⚙
Sync repo templates ⚙
Sync repo templates ⚙
- Use "layout" in the context path for errors related to the layout entry in the boot_device configuration. - Add tests for those error cases. - Refactor mirror boot_device check for s390x. Fixes: coreos/butane#484
For fcos 1.6.0-exp & openshift 4.18.0-exp specs, expected to be based on stable 3.5.0 spec. See: coreos#1693 See: coreos/fedora-coreos-tracker#1708
add: Support LUKS encryption using IBM CEX secure keys on s390x
Sync repo templates ⚙
docs/release-notes: fix openshift quadlets version reference
Sync repo templates ⚙
Dockerfile: update to Fedora 44
docs/release-notes: note Fedora 44 signing key
Config.Validate() warns when a partition on a non-boot disk uses a label without an explicit number and wipe_table is not set. However, when the disk is listed in boot_device.mirror.devices, this warning is a false positive: processBootDevice() in translate.go will auto- generate wipe_table: true for mirror disks, but Validate() runs before translation so it doesn't see the auto-generated wipe_table. The user can't reasonably suppress this: adding explicit wipe_table: true is redundant, and adding explicit partition number fields would break the label-based merge with the auto-generated mirror partitions. Skip the ErrReuseByLabel check for disks that are listed in boot_device.mirror.devices. Fixes: coreos/butane#710 Assisted-by: <anthropic/claude-opus-4.6>
…boot-mirror fcos: skip ErrReuseByLabel warning for boot_device.mirror disks
Add an optional flag to to enable pretty rust-like error reporting for butane errors. This introduces the flags: - raw-error - color / colour (auto, always, or never) While also respecting the `NO_COLOR` environment variable.
Pretty error reporting
There was a problem hiding this comment.
Code Review
This pull request imports the Butane codebase, including build configurations, Dockerfile, developer skills documentation, and core translation, validation, and utility packages for base spec versions v0_1 through v0_6. The review feedback identifies a critical, recurring vulnerability across several base spec versions (v0_2 through v0_6) in translate.go where addMountUnits dereferences fs.Path or fs.Format pointers without verifying if they are nil, which can lead to nil pointer dereference panics during unvalidated translation.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
39f3d38 to
b4a8fee
Compare
Move all Butane source code, docs, tests, build scripts, and CI configuration into a butane/ subdirectory in preparation for merging into the Ignition repository via git merge --allow-unrelated-histories. Related: coreos/fedora-coreos-tracker#2006
Merge the full Butane repository (github.com/coreos/butane) into the butane/ subdirectory via git merge --allow-unrelated-histories, after moving all Butane files into a butane/ subdirectory in the source repo. This preserves complete Git history with proper rename tracking, so git blame and git log --follow work correctly for all butane/ files. Related: coreos/fedora-coreos-tracker#2006
Remove files from the butane/ subtree that are repo-level concerns now handled by ignition: go.mod, go.sum, vendor/, CI workflows, packaging configs, linter configs, and AI agent files. The actual source code, docs, build scripts, tests, and opencode skills are preserved.
Rewrite all internal Butane import paths from github.com/coreos/butane/ to github.com/coreos/ignition/v2/butane/ so that Butane's code is part of the single Ignition Go module. Add github.com/clarketm/json as a new dependency required by Butane, and bump go-systemd to v22.7.0. Also fix stray ')' in license headers across Butane files.
Teach Ignition's config parser to accept Butane YAML configs in addition to Ignition JSON. Parse() now tries Ignition JSON first and, on failure, attempts to transpile the input as a Butane config using the integrated butane/ library. This allows users to provide Butane configs directly to instances without a separate transpilation step. Key design decisions: - JSON is tried first for zero behavioral change on existing configs - On both failures, the original Ignition error is returned - source: local properly errors since FilesDir is unavailable at boot - OpenShift variant configs produce MachineConfig YAML which fails Ignition parsing, as those configs go through MCO Related: coreos/fedora-coreos-tracker#2006
- build: Source butane/build to produce butane binary, restore CGO_ENABLED=1 - butane/build: Use module path, accept VERSION from parent - test: Add butane/ to license header check paths - Makefile: Install butane binary to /usr/bin - config: Add unit tests for Butane YAML parsing - config: Use DeserializeOptions (go-systemd v22.7.0) - butane: Fix errcheck lint issues - butane: Remove TMT tests (conflict with ignition TMT discovery)
b4a8fee to
0308784
Compare
|
So far LGTM. No changes in CI jobs? How does the packaging change with this? |
Initial Butane merge into ignition