Skip to content

Conversation

@sairon
Copy link
Member

@sairon sairon commented Dec 8, 2025

Summary by CodeRabbit

Release Notes

  • New Features

    • Added vconsole configuration support for keyboard layout management.
    • Added docker-prepare systemd service for improved Docker initialization.
  • Updates

    • Updated kernel to version 6.12.60.
    • Upgraded CI/CD GitHub Actions to latest versions.
    • Enhanced OS update test with improved container status verification.
  • Removals

    • Discontinued support for ASUS Tinker Board, ODROID-XU4, and Raspberry Pi 2/3/4 32-bit variants.
  • Improvements

    • Improved Docker configuration and data persistence management.
    • Enhanced systemd service configurations for better environment handling.

✏️ Tip: You can customize this high-level summary in your review settings.

dependabot bot and others added 30 commits October 13, 2025 18:06
Bumps [mikepenz/action-junit-report](https://github.com/mikepenz/action-junit-report) from 5.6.2 to 6.0.0.
- [Release notes](https://github.com/mikepenz/action-junit-report/releases)
- [Commits](mikepenz/action-junit-report@3585e95...5b7ee5a)

---
updated-dependencies:
- dependency-name: mikepenz/action-junit-report
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Prefer the containerd snapshotter by using it by default for new installs and
when no Docker data is present (e.g. after datadisk wipe). The snapshotter is
enabled by a dockerd flag which is set when a flag file is present in the data
partition. This flag file can be used also to opt-in for this snapshotter on
legacy installs (high level API through OS Agent and Supervisor TBD), to
migrate to the containerd snapshotter this file can be simply created manually.

Testing shown no major problems when migrating, the old overlay2 folder can be
(and should be - to avoid situations where the data disk might run out of
space) deleted before the docker.service is started in the docker-prepare
script.

Note that there's no offline migration path, OS needs to be connected to the
internet to re-download the images when migrating. This could be theoretically
possible through docker image save/load functions but guarding for enough of
space and other edge cases would be probably too complex to justify it.

Refs #4252
Refs #4253 - easier opt-in method is still needed
Closes #4254 - migration is handled seamlessly by Docker
The deprecated-key-path option is no longer handled, but it doesn't cause
problems because the key is explicitly ignored. It was completely removed in
Docker 19.03.0 [1].

As such, the option and the pre-start script to fix the corrupted key.json can
be removed now, as it has no effect, only printing confusing message when
Docker service fails to start.

[1] http://github.com/moby/moby/commit/98fc09128b3f8221680bd22c2de5b893bd3d7ef8
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.2 to 5.0.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@ea165f8...330a01c)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 5.0.0 to 6.0.0.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](actions/download-artifact@634f93c...018cc2c)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…PCIe Gen3x2 Bridge (#4366)

Vendor ID: 152d
Product ID: 0583
…4368)

Because the OS downgrade performed in tests now triggers change in container
snapshotters, all containers need to be redownloaded. Make sure that CLI
container exists and increase the timeout for the time being.
A bug introduced in Docker v28.2+ can cause slow container restart in some
cases because of usage of IPv4 mapped IPv6 addresses in iptables command.
Backport a simple patch from upstream to fix it before we bump to a newer
Docker version.

Fixes #4363
…PCIe Gen3x2 Bridge (#4366)

Vendor ID: 152d
Product ID: 0583

(cherry picked from commit 4e7b99d)
A bug introduced in Docker v28.2+ can cause slow container restart in some
cases because of usage of IPv4 mapped IPv6 addresses in iptables command.
Backport a simple patch from upstream to fix it before we bump to a newer
Docker version.

Fixes #4363

(cherry picked from commit b3a9e76)
With home-assistant/cli#604, there is no
--content-trust option anymore. Remove the call and only check if Supervisor is
healthy and there are no issues. This replaces #4370 which is too broad.
With home-assistant/cli#604, there is no
--content-trust option anymore. Remove the call and only check if Supervisor is
healthy and there are no issues. This replaces #4370 which is too broad.

(cherry picked from commit 1d29f6b)
Bumps [mikepenz/action-junit-report](https://github.com/mikepenz/action-junit-report) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/mikepenz/action-junit-report/releases)
- [Commits](mikepenz/action-junit-report@5b7ee5a...e08919a)

---
updated-dependencies:
- dependency-name: mikepenz/action-junit-report
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Remove configs and board files of deprecated architectures

* Remove support for ODROID-XU4 boot files

* Remove ASUS Tinker support from rpi-rf-mod

* Remove RPi armv7 config fragment
Atm some targets don't have comments support enabled for iptables. There's no reason to limit that to just arm64-rockhip target, so this change addresses that.
* buildroot 02f1553a34...986b8be22d (2):
  > package/go: security bump to version 1.25.3
  > package/go: bump to version 1.25.1
Update Docker and the related components to the latest security releases.

* buildroot 986b8be22d...74aec5a64c (4):
  > package/docker-cli: bump version to v28.5.2
  > package/docker-engine: bump version to v28.5.2
  > package/containerd: bump version to v2.1.5
  > package/runc: bump version to v1.3.3
…#4393)

Importing docker-archive format leads to some layers missing in the content
storage which results in some image metadata missing. This appears to be the
same regression as moby/moby#49473. Importing OCI archives when bootstrapping
the data partition seems to work this bug around.

Fixes #4385
Extract some of the parts of the "image import" to the script creating the data
partition to separate concerns. The Docker data directory is now passed as a
daemon option, instead of only mounting the data partition's folder to the
default directory, to be closer to the deployment setup. Also trap the exit and
error signals to remove the build container and unmount the data partition, as
failed or cancelled build have been leaking the containers/mounts when building
interactively (attached to the build container shell).
Since home-assistant/version#305 the AppArmor profiles were split to
per-channel files. This was never reflected in hassio package build though.
Currently this doesn't cause any trouble and the profile is replaced later by
the Supervisor but make sure we're always using the correct one from the
beginning.
sairon and others added 12 commits November 13, 2025 11:01
Bumps [actions/checkout](https://github.com/actions/checkout) from 5.0.0 to 6.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@08c6903...1af3b93)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* buildroot 74aec5a64c...0aa9729cd5 (1):
  > Merge tag '2025.02.8' into 2025.02.x-haos
For users having non-English, and especially non-qwerty layouts, using the host
shell can be very awkward. There was no option to change the keymaps as they
haven't been installed in the OS, and the persistence couldn't have been
achieved because of read-only /etc.

With upstream patch merged in #4224, we have an option to put
/etc/vconsole.conf to a writable location and use the same approach as in the
timezone PR. This is needed because even if we only bind-mounted the file from
the overlay directory, the Systemd services which start early will still refer
to the inode on the read-only FS. Also, gzip is required as current version of
kbd in Buildroot (v2.6.4) always compresses the keymaps using gzip. We can get
rid of this after we bump to kbd v2.9.0 [1] or newer. The overall bloat in
local build of the OS is slightly over 1 MiB, so it is acceptable.

With these changes, the `localectl set-keymap` command can be used to use any
available keymap from the installed `kbd` package (refer to `localectl
list-keymaps` for complete lists) and persist it between reboots.

[1] https://github.com/legionus/kbd/releases/tag/v2.9.0

Fixes #1775
Update to the latest versions and update tests to use the new schema of the
inspect output.

* buildroot 0aa9729cd5...808ee7b916 (4):
  > package/docker-engine: bump version to v29.1.2
  > package/docker-cli: bump version to v29.1.2
  > package/containerd: bump version to v2.2.0
  > package/runc: bump version to v1.3.4
@coderabbitai
Copy link

coderabbitai bot commented Dec 8, 2025

📝 Walkthrough

Walkthrough

This change removes support for older ARM-based boards (ODROID-XU4, Raspberry Pi 2/3/4 32-bit, ASUS Tinker), updates GitHub Actions to newer versions, bumps kernel from 6.12.51 to 6.12.60, refactors Docker startup through a new systemd service, increments os-agent to 1.8.1, and advances buildroot-external to version 17.0.

Changes

Cohort / File(s) Summary
GitHub Actions workflow updates
.github/workflows/artifacts-index.yaml, .github/workflows/build.yaml, .github/workflows/pr-checks.yml, .github/workflows/test.yaml
Checkout action upgraded from v5.0.0 to v6.0.0; upload/download artifact actions bumped to v5.0.0 and v6.0.0 respectively; junit-report action also updated.
Board removal - Issue templates & build matrix
.github/ISSUE_TEMPLATE/bug_report.yml, .github/workflows/matrix.json, .github/release-drafter.yml
Removed odroid-xu4, rpi2, rpi3, rpi4 (32-bit), and tinker from dropdown options and CI matrix; removed tinker release category.
Buildroot submodule
buildroot
Submodule commit reference updated.
ASUS Tinker board removal
buildroot-external/board/asus/hassos-hook.sh, buildroot-external/board/asus/tinker/*
Entirely removed tinker board directory and associated hook scripts, boot configurations, kernel patches, and SPL/partition definitions.
ODROID-XU4 removal
buildroot-external/board/hardkernel/odroid-xu4/*
Deleted odroid-xu4 board configuration, hooks, image/partition definitions, kernel config, and boot scripts.
Raspberry Pi 32-bit removal
buildroot-external/board/raspberrypi/rpi2/meta, buildroot-external/board/raspberrypi/rpi3/meta, buildroot-external/board/raspberrypi/rpi4/*
Removed rpi2, rpi3, rpi4 board metadata and U-Boot NVMe config for rpi4.
Kernel version updates
Documentation/kernel.md, buildroot-external/configs/generic_aarch64_defconfig, buildroot-external/configs/generic_x86_64_defconfig, buildroot-external/configs/green_defconfig, buildroot-external/configs/khadas_vim3_defconfig, buildroot-external/configs/odroid_*.defconfig, buildroot-external/configs/ova_defconfig, buildroot-external/configs/rpi3_64_defconfig, buildroot-external/configs/rpi4_64_defconfig, buildroot-external/configs/rpi5_64_defconfig, buildroot-external/configs/yellow_defconfig
Updated kernel custom version from 6.12.51 to 6.12.60.
Defconfig cleanup & package additions
buildroot-external/configs/generic_aarch64_defconfig, buildroot-external/configs/generic_x86_64_defconfig, buildroot-external/configs/green_defconfig, buildroot-external/configs/khadas_vim3_defconfig, buildroot-external/configs/odroid_*.defconfig, buildroot-external/configs/rpi3_64_defconfig, buildroot-external/configs/rpi4_64_defconfig, buildroot-external/configs/rpi5_64_defconfig, buildroot-external/configs/yellow_defconfig
Added BR2_PACKAGE_GZIP and BR2_PACKAGE_SYSTEMD_LOCALED; removed BR2_PACKAGE_SYSTEMD_VCONSOLE_DEFAULT_KEYMAP.
Removed defconfigs
buildroot-external/configs/odroid_xu4_defconfig, buildroot-external/configs/rpi2_defconfig, buildroot-external/configs/rpi3_defconfig, buildroot-external/configs/rpi4_defconfig, buildroot-external/configs/tinker_defconfig
Entire files deleted for unsupported boards.
Kernel config changes
buildroot-external/kernel/v6.12.y/device-support.config, buildroot-external/kernel/v6.12.y/hassos.config, buildroot-external/kernel/v6.12.y/kernel-arm64-rockchip.config
Added USB network driver CONFIG_USB_NET_CH9200; added netfilter comment match; reorganized netfilter config.
Package manager updates
buildroot-external/package/hardkernel-boot/Config.in, buildroot-external/package/hardkernel-boot/hardkernel-boot.mk, buildroot-external/package/os-agent/os-agent.mk, buildroot-external/package/rpi-rf-mod/Config.in, buildroot-external/package/rpi-rf-mod/rpi-rf-mod.mk
Removed ODROID-XU4 and Tinker board support from package configs; bumped os-agent from 1.7.2 to 1.8.1.
Raspberry Pi cmdline & kernel configs
buildroot-external/board/raspberrypi/cmdline.txt, buildroot-external/board/raspberrypi/kernel-armv7.config
Added USB device quirk (152d:0583:u); removed armv7-specific kernel LZ4 config.
Docker service refactor
buildroot-external/rootfs-overlay/usr/lib/systemd/system/docker-prepare.service, buildroot-external/rootfs-overlay/usr/lib/systemd/system/docker.service.d/hassos.conf, buildroot-external/rootfs-overlay/usr/lib/systemd/system/docker.service.d/failure.conf, buildroot-external/rootfs-overlay/usr/libexec/docker-prepare, buildroot-external/rootfs-overlay/usr/libexec/docker-failure
Introduced new docker-prepare service and script for containerd snapshotter setup; removed ExecStopPost failure handler.
Container & data management
buildroot-external/package/hassio/create-data-partition.sh, buildroot-external/package/hassio/dind-import-containers.sh, buildroot-external/package/hassio/fetch-container-image.sh
Moved persistent data to data partition; switched archive format to oci-archive; removed channel argument and AppArmor setup from dind script.
SystemD vconsole configuration
buildroot-external/rootfs-overlay/usr/lib/systemd/system.conf.d/etc-environment-overrides.conf, buildroot-external/rootfs-overlay/usr/lib/systemd/system/systemd-localed.service.d/vconsole.conf, buildroot-external/rootfs-overlay/usr/lib/systemd/system/systemd-vconsole-setup.service.d/vconsole.conf, buildroot-external/rootfs-overlay/usr/libexec/hassos-overlay, buildroot-external/scripts/rootfs-layer.sh
Added vconsole environment overrides and drop-in configs for systemd services; introduced setup_vconsole function.
Docker daemon configuration
buildroot-external/rootfs-overlay/etc/docker/daemon.json
Removed storage-driver and deprecated-key-path settings.
OTA & build scripts
buildroot-external/ota/rauc-hook, buildroot-external/scripts/post-build.sh, scripts/update-kernel-upstream.sh
Removed ODROID-XU4 eMMC boot partition flashing; added vconsole setup call; removed tinker from kernel update targets.
Version bumps
buildroot-external/meta
Incremented version from 16.3 to 17.0.
Tests
tests/smoke_test/test_os_update.py, tests/supervisor_test/test_supervisor.py
Increased OS update timeout from 300 to 600 seconds; added container health verification; renamed test_code_sign to test_supervisor_errors; changed supervisor IP retrieval path.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Board removal logic: Verify all references to odroid-xu4, rpi2/rpi3/rpi4 (32-bit), and tinker are properly cleaned up across build scripts, patches, and CI configurations
  • Docker service refactor: Review the new docker-prepare service flow and its interaction with containerd snapshotter setup in docker.service.d/hassos.conf
  • Data partition management: Ensure data_dir path changes in create-data-partition.sh and dind-import-containers.sh maintain backward compatibility and persistence
  • Test timeout implications: Verify that the doubled OS update timeout (600s) is necessary and that container health checks don't introduce flakiness
  • SystemD vconsole configuration: Confirm vconsole setup chain through post-build, rootfs-layer, and systemd drop-in configs doesn't create conflicts
  • Version coordination: Cross-check kernel 6.12.60 and os-agent 1.8.1 updates are compatible with new configuration options (GZIP, SYSTEMD_LOCALED)

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Prepare 17.0.rc1' clearly and specifically describes the main objective of this PR: preparing the operating system for the 17.0 release candidate.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch prepare-17.0.rc1

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
tests/supervisor_test/test_supervisor.py (1)

119-133: Guard against missing data in ha resolution info response

resolution_info.get("data").get("unhealthy") will raise if data is None (e.g., if the command returns an error result), which makes the failure less clear than asserting on the response shape first. A small refactor keeps the test robust while still failing when things are wrong:

 def test_supervisor_errors(shell_json):
@@
-    resolution_info = shell_json("ha resolution info --no-progress --raw-json")
-    logger.info("Resolution center info: %s", resolution_info)
-    # check supervisor is healthy
-    unhealthy = resolution_info.get("data").get("unhealthy")
-    assert len(unhealthy) == 0, "Supervisor is unhealthy"
-    # check for unsupported entries
-    unsupported = resolution_info.get("data").get("unsupported")
-    assert len(unsupported) == 0, "Unsupported entries found"
+    resolution_info = shell_json("ha resolution info --no-progress --raw-json")
+    logger.info("Resolution center info: %s", resolution_info)
+    assert resolution_info.get("result") == "ok", "Resolution info failed"
+    data = resolution_info.get("data") or {}
+    # check supervisor is healthy
+    unhealthy = data.get("unhealthy", [])
+    assert len(unhealthy) == 0, "Supervisor is unhealthy"
+    # check for unsupported entries
+    unsupported = data.get("unsupported", [])
+    assert len(unsupported) == 0, "Unsupported entries found"

This preserves the intent while avoiding an AttributeError on unexpected responses.

♻️ Duplicate comments (2)
buildroot-external/configs/rpi4_64_defconfig (1)

33-33: Aligns with global gzip/locale changes; same considerations as ova_defconfig

Adding BR2_PACKAGE_GZIP and BR2_PACKAGE_SYSTEMD_LOCALED here aligns this defconfig with the others; the earlier remarks about potential gzip vs pigz redundancy and the role of LOCALED for the new keyboard/locale flow apply here as well.

Also applies to: 130-130

buildroot-external/configs/yellow_defconfig (1)

34-34: Matches other defconfig gzip/locale changes

Yellow now follows the same pattern as the other updated defconfigs (GZIP + PIGZ + SYSTEMD_LOCALED). The previous comments about potential gzip/pigz redundancy and LOCALED’s role in the vconsole/locale workflow also apply here.

Also applies to: 133-133

🧹 Nitpick comments (3)
tests/smoke_test/test_os_update.py (2)

42-48: Timeout bump and local helper look fine; consider sharing helper

The extended @pytest.mark.timeout(600) and the local check_container_running mirror existing patterns and should help with slower OS upgrade paths. Since the same helper logic now exists here, in test_init, and in tests/smoke_test/test_basic.py, you might consider extracting a small module-level or shared helper later to avoid diverging behavior, but it’s non‑blocking.


72-78: Container wait loop relies solely on global test timeout

The new loop waiting for hassio_supervisor and hassio_cli is reasonable for the 17.0 → 16.x re-download scenario, but in a failure case it will spin until the 600s test timeout fires. If you start seeing flakes here, adding some lightweight logging or a soft upper bound/pytest.fail before the hard timeout would make diagnosis easier; otherwise this is acceptable as-is.

buildroot-external/package/hassio/create-data-partition.sh (1)

23-23: Trap references potentially unset container variable.

If the mount on line 21 fails before the container is started on line 27, ${container} will be unset when the trap executes. This causes docker rm -f to run without an argument, which may produce an error message (though the script still cleans up the mount).

Consider initializing container before the trap or guarding the docker rm:

+container=""
 trap 'docker rm -f ${container} > /dev/null; sudo umount ${data_dir} || true' ERR EXIT

Or:

-trap 'docker rm -f ${container} > /dev/null; sudo umount ${data_dir} || true' ERR EXIT
+trap '[ -n "${container}" ] && docker rm -f ${container} > /dev/null; sudo umount ${data_dir} || true' ERR EXIT
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to data retention organization setting

📥 Commits

Reviewing files that changed from the base of the PR and between 92c1bc1 and cf72489.

📒 Files selected for processing (90)
  • .github/ISSUE_TEMPLATE/bug_report.yml (0 hunks)
  • .github/release-drafter.yml (0 hunks)
  • .github/workflows/artifacts-index.yaml (1 hunks)
  • .github/workflows/build.yaml (7 hunks)
  • .github/workflows/matrix.json (0 hunks)
  • .github/workflows/pr-checks.yml (1 hunks)
  • .github/workflows/test.yaml (3 hunks)
  • Documentation/kernel.md (1 hunks)
  • buildroot (1 hunks)
  • buildroot-external/board/asus/hassos-hook.sh (0 hunks)
  • buildroot-external/board/asus/tinker/boot-env.txt (0 hunks)
  • buildroot-external/board/asus/tinker/cmdline.txt (0 hunks)
  • buildroot-external/board/asus/tinker/image-spl-spl.cfg (0 hunks)
  • buildroot-external/board/asus/tinker/kernel.config (0 hunks)
  • buildroot-external/board/asus/tinker/meta (0 hunks)
  • buildroot-external/board/asus/tinker/partition-spl-spl.cfg (0 hunks)
  • buildroot-external/board/asus/tinker/patches/README.md (0 hunks)
  • buildroot-external/board/asus/tinker/patches/linux/0001-Revert-ARM-dts-rockchip-use-DMA-channels-for-UARTs-f.patch (0 hunks)
  • buildroot-external/board/asus/tinker/patches/linux/0002-ARM-DTS-rk3288-tinker-Defining-the-SPI-interface.patch (0 hunks)
  • buildroot-external/board/asus/tinker/patches/linux/0003-ARM-dts-rockchip-enable-I2C1-4-on-rk3288-tinker.patch (0 hunks)
  • buildroot-external/board/asus/tinker/patches/linux/0004-RK3288-DTSI-rk3288.dtsi-Add-missing-SPI2-pinctrl.patch (0 hunks)
  • buildroot-external/board/asus/tinker/patches/linux/0005-ARM-DTSI-rk3288-tinker-Improving-the-CPU-max-voltage.patch (0 hunks)
  • buildroot-external/board/asus/tinker/patches/linux/0006-drivers-mmc-dw-mci-rockchip-Handle-ASUS-Tinkerboard-.patch (0 hunks)
  • buildroot-external/board/asus/tinker/patches/linux/0007-ARM-dts-rockchip-Add-Bluetooth-to-rk3288-tinker.patch (0 hunks)
  • buildroot-external/board/asus/tinker/patches/linux/0008-usb-audio-add-ASUS-TinkerBoard-s-ALC4040.patch (0 hunks)
  • buildroot-external/board/asus/tinker/patches/uboot/0001-pmic-enable-LDO2-vcc33_mipi-at-bootup.patch (0 hunks)
  • buildroot-external/board/asus/tinker/uboot-boot.ush (0 hunks)
  • buildroot-external/board/asus/tinker/uboot.config (0 hunks)
  • buildroot-external/board/hardkernel/odroid-xu4/cmdline.txt (0 hunks)
  • buildroot-external/board/hardkernel/odroid-xu4/hassos-hook.sh (0 hunks)
  • buildroot-external/board/hardkernel/odroid-xu4/image-spl-spl.cfg (0 hunks)
  • buildroot-external/board/hardkernel/odroid-xu4/kernel.config (0 hunks)
  • buildroot-external/board/hardkernel/odroid-xu4/meta (0 hunks)
  • buildroot-external/board/hardkernel/odroid-xu4/partition-spl-spl.cfg (0 hunks)
  • buildroot-external/board/hardkernel/odroid-xu4/patches/linux/0001-ODROID-XU4-regulator-s2mps11-add-ethernet-power-rese.patch (0 hunks)
  • buildroot-external/board/hardkernel/odroid-xu4/uboot-boot.ush (0 hunks)
  • buildroot-external/board/hardkernel/odroid-xu4/uboot.config (0 hunks)
  • buildroot-external/board/raspberrypi/cmdline.txt (1 hunks)
  • buildroot-external/board/raspberrypi/kernel-armv7.config (0 hunks)
  • buildroot-external/board/raspberrypi/rpi2/meta (0 hunks)
  • buildroot-external/board/raspberrypi/rpi3/meta (0 hunks)
  • buildroot-external/board/raspberrypi/rpi4/meta (0 hunks)
  • buildroot-external/board/raspberrypi/rpi4/uboot.config (0 hunks)
  • buildroot-external/configs/generic_aarch64_defconfig (3 hunks)
  • buildroot-external/configs/generic_x86_64_defconfig (3 hunks)
  • buildroot-external/configs/green_defconfig (3 hunks)
  • buildroot-external/configs/khadas_vim3_defconfig (3 hunks)
  • buildroot-external/configs/odroid_c2_defconfig (3 hunks)
  • buildroot-external/configs/odroid_c4_defconfig (3 hunks)
  • buildroot-external/configs/odroid_m1_defconfig (3 hunks)
  • buildroot-external/configs/odroid_m1s_defconfig (3 hunks)
  • buildroot-external/configs/odroid_n2_defconfig (3 hunks)
  • buildroot-external/configs/odroid_xu4_defconfig (0 hunks)
  • buildroot-external/configs/ova_defconfig (3 hunks)
  • buildroot-external/configs/rpi2_defconfig (0 hunks)
  • buildroot-external/configs/rpi3_64_defconfig (2 hunks)
  • buildroot-external/configs/rpi3_defconfig (0 hunks)
  • buildroot-external/configs/rpi4_64_defconfig (2 hunks)
  • buildroot-external/configs/rpi4_defconfig (0 hunks)
  • buildroot-external/configs/rpi5_64_defconfig (2 hunks)
  • buildroot-external/configs/tinker_defconfig (0 hunks)
  • buildroot-external/configs/yellow_defconfig (2 hunks)
  • buildroot-external/kernel/v6.12.y/device-support.config (1 hunks)
  • buildroot-external/kernel/v6.12.y/hassos.config (1 hunks)
  • buildroot-external/kernel/v6.12.y/kernel-arm64-rockchip.config (0 hunks)
  • buildroot-external/meta (1 hunks)
  • buildroot-external/ota/rauc-hook (0 hunks)
  • buildroot-external/package/hardkernel-boot/Config.in (0 hunks)
  • buildroot-external/package/hardkernel-boot/hardkernel-boot.mk (0 hunks)
  • buildroot-external/package/hassio/create-data-partition.sh (1 hunks)
  • buildroot-external/package/hassio/dind-import-containers.sh (0 hunks)
  • buildroot-external/package/hassio/fetch-container-image.sh (1 hunks)
  • buildroot-external/package/os-agent/os-agent.mk (1 hunks)
  • buildroot-external/package/rpi-rf-mod/Config.in (0 hunks)
  • buildroot-external/package/rpi-rf-mod/rpi-rf-mod.mk (0 hunks)
  • buildroot-external/rootfs-overlay/etc/docker/daemon.json (0 hunks)
  • buildroot-external/rootfs-overlay/usr/lib/systemd/system.conf.d/etc-environment-overrides.conf (1 hunks)
  • buildroot-external/rootfs-overlay/usr/lib/systemd/system/docker-prepare.service (1 hunks)
  • buildroot-external/rootfs-overlay/usr/lib/systemd/system/docker.service.d/failure.conf (0 hunks)
  • buildroot-external/rootfs-overlay/usr/lib/systemd/system/docker.service.d/hassos.conf (1 hunks)
  • buildroot-external/rootfs-overlay/usr/lib/systemd/system/systemd-localed.service.d/vconsole.conf (1 hunks)
  • buildroot-external/rootfs-overlay/usr/lib/systemd/system/systemd-vconsole-setup.service.d/vconsole.conf (1 hunks)
  • buildroot-external/rootfs-overlay/usr/libexec/docker-failure (0 hunks)
  • buildroot-external/rootfs-overlay/usr/libexec/docker-prepare (1 hunks)
  • buildroot-external/rootfs-overlay/usr/libexec/hassos-overlay (1 hunks)
  • buildroot-external/scripts/post-build.sh (1 hunks)
  • buildroot-external/scripts/rootfs-layer.sh (1 hunks)
  • scripts/update-kernel-upstream.sh (1 hunks)
  • tests/smoke_test/test_os_update.py (2 hunks)
  • tests/supervisor_test/test_supervisor.py (3 hunks)
💤 Files with no reviewable changes (51)
  • buildroot-external/board/asus/tinker/cmdline.txt
  • buildroot-external/board/asus/tinker/image-spl-spl.cfg
  • buildroot-external/board/asus/tinker/patches/linux/0007-ARM-dts-rockchip-Add-Bluetooth-to-rk3288-tinker.patch
  • buildroot-external/board/raspberrypi/rpi4/uboot.config
  • buildroot-external/board/asus/tinker/patches/README.md
  • buildroot-external/rootfs-overlay/usr/lib/systemd/system/docker.service.d/failure.conf
  • buildroot-external/board/hardkernel/odroid-xu4/image-spl-spl.cfg
  • buildroot-external/board/hardkernel/odroid-xu4/hassos-hook.sh
  • .github/ISSUE_TEMPLATE/bug_report.yml
  • buildroot-external/board/hardkernel/odroid-xu4/uboot.config
  • buildroot-external/kernel/v6.12.y/kernel-arm64-rockchip.config
  • buildroot-external/board/asus/hassos-hook.sh
  • buildroot-external/board/hardkernel/odroid-xu4/kernel.config
  • buildroot-external/package/rpi-rf-mod/Config.in
  • buildroot-external/configs/odroid_xu4_defconfig
  • buildroot-external/configs/tinker_defconfig
  • buildroot-external/board/hardkernel/odroid-xu4/meta
  • buildroot-external/board/asus/tinker/patches/linux/0001-Revert-ARM-dts-rockchip-use-DMA-channels-for-UARTs-f.patch
  • buildroot-external/board/asus/tinker/patches/linux/0002-ARM-DTS-rk3288-tinker-Defining-the-SPI-interface.patch
  • buildroot-external/board/asus/tinker/partition-spl-spl.cfg
  • buildroot-external/package/hassio/dind-import-containers.sh
  • buildroot-external/board/hardkernel/odroid-xu4/cmdline.txt
  • buildroot-external/package/hardkernel-boot/hardkernel-boot.mk
  • .github/release-drafter.yml
  • buildroot-external/rootfs-overlay/usr/libexec/docker-failure
  • buildroot-external/board/raspberrypi/rpi2/meta
  • buildroot-external/board/hardkernel/odroid-xu4/partition-spl-spl.cfg
  • buildroot-external/configs/rpi3_defconfig
  • buildroot-external/ota/rauc-hook
  • buildroot-external/configs/rpi4_defconfig
  • buildroot-external/board/asus/tinker/uboot.config
  • buildroot-external/board/asus/tinker/meta
  • buildroot-external/board/hardkernel/odroid-xu4/uboot-boot.ush
  • buildroot-external/board/raspberrypi/kernel-armv7.config
  • buildroot-external/board/asus/tinker/patches/linux/0006-drivers-mmc-dw-mci-rockchip-Handle-ASUS-Tinkerboard-.patch
  • buildroot-external/board/asus/tinker/patches/linux/0005-ARM-DTSI-rk3288-tinker-Improving-the-CPU-max-voltage.patch
  • buildroot-external/board/asus/tinker/uboot-boot.ush
  • buildroot-external/configs/rpi2_defconfig
  • buildroot-external/board/raspberrypi/rpi3/meta
  • buildroot-external/rootfs-overlay/etc/docker/daemon.json
  • buildroot-external/board/asus/tinker/boot-env.txt
  • buildroot-external/package/hardkernel-boot/Config.in
  • buildroot-external/package/rpi-rf-mod/rpi-rf-mod.mk
  • buildroot-external/board/asus/tinker/patches/linux/0003-ARM-dts-rockchip-enable-I2C1-4-on-rk3288-tinker.patch
  • buildroot-external/board/asus/tinker/patches/linux/0008-usb-audio-add-ASUS-TinkerBoard-s-ALC4040.patch
  • buildroot-external/board/asus/tinker/patches/uboot/0001-pmic-enable-LDO2-vcc33_mipi-at-bootup.patch
  • buildroot-external/board/asus/tinker/patches/linux/0004-RK3288-DTSI-rk3288.dtsi-Add-missing-SPI2-pinctrl.patch
  • buildroot-external/board/asus/tinker/kernel.config
  • .github/workflows/matrix.json
  • buildroot-external/board/hardkernel/odroid-xu4/patches/linux/0001-ODROID-XU4-regulator-s2mps11-add-ethernet-power-rese.patch
  • buildroot-external/board/raspberrypi/rpi4/meta
🧰 Additional context used
📓 Path-based instructions (1)
*/**(html|markdown|md)

⚙️ CodeRabbit configuration file

*/**(html|markdown|md): - For instructional content in documentation, use a direct and authoritative tone. Avoid expressions of politeness such as 'may' or 'please', and ensure the goal of the instruction is fronted.

  • Apply the Microsoft Style Guide to ensure documentation maintains clarity and conciseness.
  • In step-by-step instructions, front the location phrase in the instructional sentence.
  • In step-by-step instructions, front the 'goal' in the instructional sentence.
  • In step-by-step instructions, if in doubt what to front, front the 'goal' before the location phrase in the instructional sentence.
  • do not hyphenate terms like 'top-right' or 'bottom-left' with 'corner'

*/**(html|markdown|md): - Use bold to mark UI strings.

  • If "" are used to mark UI strings, replace them by bold.

  • Be brief in your replies and don't add fluff like "thank you for..." and "Please let me know if"

  • Use sentence-style capitalization also in headings.

do not comment on HTML used for icons

Avoid flagging inline HTML for embedding videos in future reviews for this repository.

Files:

  • scripts/update-kernel-upstream.sh
  • Documentation/kernel.md
  • buildroot-external/meta
🧬 Code graph analysis (2)
buildroot-external/scripts/post-build.sh (1)
buildroot-external/scripts/rootfs-layer.sh (1)
  • setup_vconsole (54-57)
tests/smoke_test/test_os_update.py (3)
tests/conftest.py (2)
  • shell (46-50)
  • shell_json (54-62)
tests/smoke_test/test_basic.py (1)
  • check_container_running (13-17)
tests/qemu_shell_strategy.py (1)
  • run_check (26-27)
🔇 Additional comments (37)
tests/supervisor_test/test_supervisor.py (1)

31-33: Docker inspect template now assumes bridge network

Switching to {{.NetworkSettings.Networks.bridge.IPAddress}} tightens the assumption that hassio_supervisor is attached to the bridge network. If that ever changes (custom network name, host networking, etc.), this will return an empty string and the ping loop will never succeed. If there’s any chance the network name differs across environments, you might want a more generic template (e.g., iterate over .NetworkSettings.Networks and pick the first IP); otherwise, this change is fine as long as bridge is guaranteed.

Also applies to: 159-161

buildroot (1)

1-1: Verify the buildroot submodule commit and alignment with version 2025.02.8.

This submodule reference has been updated to a new commit. Please confirm that:

  1. The commit 808ee7b91641925b4b7bb4bd400494e172265daf exists and is accessible in the buildroot repository.
  2. This commit aligns with the Buildroot 2025.02.8 version mentioned in the PR objectives.
  3. No breaking changes or new dependencies are introduced in this submodule update that could affect the Home Assistant OS build.
buildroot-external/meta (1)

1-2: LGTM! Version bump aligns with release preparation.

The version bump from 16.3 to 17.0.rc1 is correctly formatted and consistent with the PR objectives.

buildroot-external/rootfs-overlay/usr/libexec/hassos-overlay (1)

25-29: LGTM! Console keymap configuration properly initialized.

The vconsole.conf setup correctly creates a default US keymap configuration when the file doesn't exist. The implementation follows the same pattern as other overlay configurations in this script.

.github/workflows/test.yaml (1)

35-35: LGTM! GitHub Actions updated consistently.

The workflow updates multiple actions to their latest stable versions. The version differences (v6.0.0 for checkout/download-artifact, v5.0.0 for upload-artifact, v6.0.1 for junit-report) reflect the latest stable releases for each action.

Also applies to: 60-60, 80-80, 88-88, 96-96

.github/workflows/pr-checks.yml (1)

18-18: LGTM! Checkout action updated consistently with other workflows.

buildroot-external/board/raspberrypi/cmdline.txt (1)

1-1: LGTM! USB quirk added for JMicron JMS583 bridge.

The new quirk entry 152d:0583:u correctly disables UAS for the JMicron JMS583 Gen2→PCIe Gen3x2 bridge. Note that 152d:a583:u is a different device ID (not a duplicate).

.github/workflows/artifacts-index.yaml (1)

42-42: No concerns with actions/[email protected] upgrade.

v6.0.0 is the latest stable version. Breaking changes involve credential storage (moved from .git/config to $RUNNER_TEMP for better security) and Docker container action requirements (Actions Runner v2.329.0+), but neither applies to this repository's workflows.

buildroot-external/package/os-agent/os-agent.mk (1)

7-7: Release v1.8.1 is valid and documented. The version bump from 1.7.2 to 1.8.1 (released 5 December 2025) includes updates to Go 1.25, removal of the overlay2 Docker driver option, and dependency updates. No breaking changes affect this buildroot package.

buildroot-external/package/hassio/fetch-container-image.sh (1)

55-55: The code already uses oci-archive format, which is compatible with containerd's image import capabilities (via ctr images import). This format does not relate to containerd v2.2.0's snapshotter implementations—snapshotters like stargz and SOCI are external plugins, not built-in features. The current usage of oci-archive is appropriate for container image fetching and is supported by skopeo.

If this comment is meant to address a specific snapshotter issue, clarify which snapshotter and which issue this resolves, as the current narrative references an unsubstantiated change and conflates image archive format with snapshotter functionality.

Likely an incorrect or invalid review comment.

buildroot-external/rootfs-overlay/usr/libexec/docker-prepare (1)

1-23: LGTM - Docker preparation script is well-structured.

The script correctly:

  • Creates the containerd snapshotter flag for fresh/wiped installations
  • Conditionally enables the feature flag and cleans up legacy overlay2 data
  • Uses || true appropriately to avoid failing the service if cleanup fails

The POSIX sh compatibility is maintained throughout.

buildroot-external/package/hassio/create-data-partition.sh (1)

34-44: LGTM - Data partition setup is well-structured.

The here-document correctly:

  • Creates the containerd snapshotter marker for consistency with runtime behavior
  • Downloads the per-channel AppArmor profile from the version API
  • Persists the build-time channel configuration using proper JSON escaping with jq --arg
buildroot-external/configs/rpi3_64_defconfig (1)

33-33: LGTM - Configuration additions align with PR objectives.

  • BR2_PACKAGE_GZIP: Adds traditional gzip alongside the existing pigz (parallel gzip)
  • BR2_PACKAGE_SYSTEMD_LOCALED: Enables localectl for configuring console keymaps, as mentioned in the PR objectives

These changes are consistently applied across multiple defconfig files in this PR.

Also applies to: 129-129

buildroot-external/scripts/post-build.sh (1)

20-20: LGTM - vconsole setup follows established pattern.

The setup_vconsole call mirrors the existing setup_localtime pattern, enabling writable vconsole configuration via the overlay filesystem. This aligns with the PR objective to make console keymaps configurable through localectl.

buildroot-external/configs/odroid_n2_defconfig (2)

21-21: Kernel version bump to 6.12.60 looks good.

This is a point release update within the stable 6.12.y series. The PR summary indicates incremental kernel updates from 6.12.52 through 6.12.60, which typically include bug fixes and security patches.


34-34: LGTM - Configuration additions are consistent with other defconfigs.

The BR2_PACKAGE_GZIP and BR2_PACKAGE_SYSTEMD_LOCALED additions match the same pattern applied across other board configurations in this PR.

Also applies to: 125-125

buildroot-external/kernel/v6.12.y/device-support.config (1)

38-38: LGTM! CH9200 USB ethernet adapter support added.

The addition of the QingHeng CH9200 USB network adapter driver as a loadable module is correctly placed and aligns with the PR objectives.

buildroot-external/configs/rpi5_64_defconfig (1)

35-35: LGTM! Package additions support configurable console keymaps.

The addition of GZIP and SYSTEMD_LOCALED, along with the removal of the explicit default keymap setting, aligns with the PR objective to make console keymaps configurable through localectl.

Also applies to: 129-129

buildroot-external/configs/odroid_c2_defconfig (2)

34-34: LGTM! Package additions support configurable console keymaps.

Consistent with the changes across other defconfigs, enabling GZIP and SYSTEMD_LOCALED to support the new console keymap configuration feature.

Also applies to: 125-125


21-21: Kernel version 6.12.60 is a valid, officially released stable version.

The kernel version 6.12.60 is confirmed as a legitimate stable release from December 1, 2025, available in the official Linux kernel repositories (kernel.org and git.kernel.org stable tags). The version bump is safe to proceed with.

buildroot-external/rootfs-overlay/usr/lib/systemd/system/systemd-localed.service.d/vconsole.conf (1)

1-3: LGTM! Systemd drop-in correctly configures vconsole path for overlay.

This service override configures systemd-localed to use the vconsole configuration from the overlay mount point, enabling runtime keymap changes through localectl. The ReadWritePaths directive appropriately grants the necessary write access for this functionality.

buildroot-external/configs/odroid_c4_defconfig (1)

21-21: LGTM! Consistent configuration updates.

The kernel version bump to 6.12.60 and package additions mirror the changes in other defconfigs, maintaining consistency across ODROID boards.

Also applies to: 34-34, 123-123

buildroot-external/rootfs-overlay/usr/lib/systemd/system.conf.d/etc-environment-overrides.conf (1)

3-3: LGTM! Global environment configuration for vconsole overlay path.

The ManagerEnvironment directive correctly sets the vconsole configuration path system-wide, following the same pattern as the existing localtime override.

buildroot-external/configs/generic_aarch64_defconfig (1)

21-21: LGTM! Consistent configuration updates for generic aarch64.

The kernel version bump and package additions are consistent with the changes applied across all other platform defconfigs in this PR.

Also applies to: 30-30, 152-152

buildroot-external/kernel/v6.12.y/hassos.config (1)

159-159: LGTM! Netfilter comment match support enabled.

The addition of CONFIG_NETFILTER_XT_MATCH_COMMENT as a loadable module enables iptables comment support as stated in the PR objectives, allowing human-readable annotations in firewall rules.

buildroot-external/scripts/rootfs-layer.sh (1)

54-57: setup_vconsole helper is consistent with setup_localtime

The new helper mirrors the existing localtime symlink pattern and correctly targets the overlay vconsole.conf path; no functional issues spotted.

buildroot-external/configs/ova_defconfig (1)

21-21: Kernel bump and locale/gzip options look consistent; confirm gzip vs pigz intent

  • Kernel version update to "6.12.60" and enabling SYSTEMD_LOCALED match the wider kernel/locale changes and the new vconsole/localectl flow in this PR.
  • Both BR2_PACKAGE_GZIP and BR2_PACKAGE_PIGZ are enabled; if pigz already provides a gzip-compatible CLI in your Buildroot config, this duplication might be unnecessary, otherwise it is fine.

Also applies to: 33-33, 155-155

buildroot-external/rootfs-overlay/usr/lib/systemd/system/systemd-vconsole-setup.service.d/vconsole.conf (1)

1-2: Drop-in correctly points vconsole to overlay config

The drop-in cleanly injects SYSTEMD_ETC_VCONSOLE_CONF=/mnt/overlay/etc/vconsole.conf, matching the symlink created in setup_vconsole and the overlay layout, so systemd-vconsole-setup should consume the overlay-backed configuration as intended.

scripts/update-kernel-upstream.sh (1)

17-19: Updated defconfig/doc targets are consistent with Tinker removal

The defconfigs array and the Documentation/kernel.md sed pattern now target only the remaining boards (generic aarch64/x86_64, OVA, ODROID family, Khadas VIM3, Green), which matches the intent to drop Tinker. The brace/glob expansion with odroid_* still produces the expected defconfig set.

Consider this a reminder that any future addition/removal of defconfigs should be mirrored in both the array and the documentation sed pattern.

buildroot-external/rootfs-overlay/usr/lib/systemd/system/docker.service.d/hassos.conf (1)

5-8: ExecStart override and env wiring look correct; ensure docker-prepare ordering

The drop-in correctly:

  • Loads /run/dockerd.env via EnvironmentFile, and
  • Resets ExecStart before defining the new dockerd command with the containerd socket and $DOCKERD_FLAGS.

Because EnvironmentFile=/run/dockerd.env is mandatory, docker-prepare.service must reliably create this file and be ordered before docker.service (e.g., via Before=/After= and appropriate Wants/Requires). If that ordering is already encoded in docker-prepare’s unit, this setup is solid.

buildroot-external/configs/khadas_vim3_defconfig (1)

21-21: Khadas VIM3 config aligned with global kernel and locale updates

  • Kernel version bump to "6.12.60" matches the rest of the updated boards.
  • Enabling GZIP and SYSTEMD_LOCALED aligns this defconfig with the new gzip/systemd-locale baseline; as with other boards, double-check whether you intentionally want both GZIP and PIGZ here.

Also applies to: 34-34, 125-125

Documentation/kernel.md (1)

6-19: Kernel version table updates are consistent with defconfigs

The bumped entries to 6.12.60 for OVA, Green, ODROID boards, generic aarch64/x86-64, and Khadas VIM3 align with the corresponding defconfig kernel version changes and keep the documentation in sync.

buildroot-external/rootfs-overlay/usr/lib/systemd/system/docker-prepare.service (1)

1-11: docker-prepare systemd unit definition looks correct

Oneshot type, ordering before docker.service, and the dependency on /mnt/data being mounted are appropriate for a preparatory script, and ExecStart wiring to /usr/libexec/docker-prepare is straightforward.

buildroot-external/configs/odroid_m1_defconfig (1)

21-125: Odroid M1 defconfig kernel and package tweaks are consistent

Kernel version bump to 6.12.60 and enabling BR2_PACKAGE_GZIP and BR2_PACKAGE_SYSTEMD_LOCALED follow the same pattern as other boards and align with the documented versions; no issues spotted.

buildroot-external/configs/green_defconfig (1)

21-130: Green defconfig changes match broader board updates

The kernel version bump to 6.12.60 and enabling gzip and systemd-localed mirror the updates applied to other boards and keep this defconfig aligned with the documented kernel table.

buildroot-external/configs/generic_x86_64_defconfig (1)

21-154: Generic x86-64 defconfig updates are aligned and minimal

Kernel 6.12.60 plus enabling gzip and systemd-localed are in line with other targets and the updated documentation; configuration remains coherent.

buildroot-external/configs/odroid_m1s_defconfig (1)

21-125: Odroid M1S defconfig follows the shared update pattern

The kernel version bump and enabling gzip and systemd-localed match the changes for other Rockchip-based boards, keeping configurations in sync across the platform set.

steps:
- name: Checkout source
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🌐 Web query:

GitHub Actions actions/checkout latest version 2024 2025

💡 Result:

Latest published version is v6 — use actions/checkout@v6. [1][2]

Sources:
[1] GitHub Marketplace — Checkout (actions/checkout) (shows v6).
[2] actions/checkout repository (README/releases notes listing v6).


🌐 Web query:

GitHub Actions actions/upload-artifact v5.0.0 release

💡 Result:

actions/upload-artifact v5.0.0 was released on Oct 24, 2025 (tag v5.0.0). Main notes: adds support for Node v24.x (treated as a breaking change), bumps @actions/artifact to v4.0.0, and includes README/GHES guidance updates. [1][2]

Sources:
[1] actions/upload-artifact — Releases (v5.0.0).
[2] actions/upload-artifact — Compare v4...v5.0.0 (changelog / commits).


🌐 Web query:

GitHub Actions actions/download-artifact v6.0.0 release

💡 Result:

actions/download-artifact v6.0.0 — summary

  • Release: v6.0.0 (prepared Oct 24, 2025). [1][2]
  • Key changes: explicit BREAKING CHANGE note that the action now targets Node.js v24.x; README updates (artifact extraction, GHES usage); bumped @actions/artifact to v4.0.0. [2]
  • Notable: treated as a breaking change because of Node upgrade (update self-hosted runners or use compatible Node). [2]

Sources:
[1] mirror of actions/download-artifact repo showing prepare v6.0.0 commit (Oct 24, 2025).
[2] v6.0.0 release notes / changelog (summary of changes: Node v24 support, README updates, bump @actions/artifact).


GitHub Actions version bumps are valid but include breaking changes—verify Node.js v24.x compatibility.

The version updates are consistently applied with proper SHA pinning. However, v5.0.0 of actions/upload-artifact and v6.0.0 of actions/checkout/download-artifact include breaking changes requiring Node.js v24.x support. Verify that all CI runners (especially self-hosted ones) support Node v24.x before deploying these upgrades.

Also applies to: 210-210, 230-230, 263-263

🤖 Prompt for AI Agents
.github/workflows/build.yaml lines 58,210,230,263: the upgraded actions
(checkout v6.0.0 and upload/download-artifact v5.0.0) require Node.js v24.x;
ensure all CI runners (including self-hosted) are Node 24 compatible or
revert/pin to earlier action versions. Fix by either (a) adding or updating a
setup-node step in the workflow to install/use Node.js v24.x before these
actions run, or (b) pinning the actions back to the last compatible releases
that support your current Node version, and document the decision in the
workflow comment.

@sairon sairon requested a review from frenck December 8, 2025 15:42
@sairon sairon merged commit cf72489 into rc Dec 9, 2025
3 checks passed
@sairon sairon deleted the prepare-17.0.rc1 branch December 9, 2025 12:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants