Skip to content

feat(workflows): support project-specific extra targets - #14

Open
ArcanePivot wants to merge 1 commit into
nullclaw:mainfrom
ArcanePivot:feat/extra-targets-json
Open

feat(workflows): support project-specific extra targets#14
ArcanePivot wants to merge 1 commit into
nullclaw:mainfrom
ArcanePivot:feat/extra-targets-json

Conversation

@ArcanePivot

Copy link
Copy Markdown

Summary

  • add an optional extra_targets_json input to the reusable CI, nightly, and release workflows
  • append project-specific targets to the shared defaults instead of requiring callers to copy the full matrix
  • validate required target fields and reject duplicate target names
  • support an optional per-target build_args override
  • document a MIPS little-endian musl example

Motivation

Projects occasionally need one extra architecture without changing the defaults for every Null-family repository. Replacing targets_json works, but it duplicates the shared matrix in the caller and can drift as nullbuilder evolves.

This is motivated by a verified NullClaw MIPS target for an HC5861 router running OpenWrt 23.05.5 (mipsel_24kc, MIPS32r2 soft-float). Keeping it project-specific avoids forcing unrelated Null projects to support MIPS.

Validation

  • actionlint v1.7.12 passes
  • git diff --check passes
  • local jq cases cover empty extras, MIPS append, duplicate names, and invalid per-target arguments
  • NullClaw d8a802f builds with Zig 0.16.0 using:
zig build -Doptimize=ReleaseSmall \
  -Dtarget=mipsel-linux-musleabi \
  -Dversion=pr-mips-validation \
  -Dembedded_wasm3=false

The resulting 7,044,980-byte static MIPS32r2 binary reports the embedded version and starts an isolated gateway on the physical HC5861. /health returns {"status":"ok"} and idle RSS is about 4.7 MB. The production agent was not modified or restarted.

Compatibility

The new input defaults to [], so existing callers keep the same matrices and build arguments. build_args remains optional on every target.

Embedded wasm3 is disabled only for this proposed MIPS target because its C build currently crashes the Zig/Clang frontend for mipsel-linux-musleabi; NullClaw default channels and SQLite remain enabled.

After merge, the reusable workflow v1 branch/reference will need to be updated before a follow-up NullClaw PR can consume the new input.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant