ci: add build-linux.yaml release workflow + pre-merge clippy/fmt cleanup #51

Merged
mik-tf merged 3 commits from development_mik_build_linux into development 2026-05-06 20:23:07 +00:00
Owner

Summary

  • Adds .forgejo/workflows/build-linux.yaml — on tag push (v*), builds and publishes 3 static-pie musl binaries (hero_collab_server, hero_collab_ui, hero_collab) under the target-triple naming convention from home#212.
  • Mirrors the canonical pure-musl pipeline already shipping for hero_proc and hero_agent.
  • Build is scoped to the 3 shipped crates rather than --workspace: hero_collab_app is a Dioxus WASM frontend that currently fails its host-linux compile against the latest hero_archipelagos development branch (use_focus_poll rename + IslandContext field drift) — separate archipelago refactor, not a release blocker. hero_collab_examples is a test crate.
  • Includes cargo fmt --all (50 files, mechanical) and 16 clippy fixes (doc_lazy_continuation×5, collapsible_if×4 via 2024 if-let chains, type_complexity, dead_code on serde fixtures, assert_eq-with-bool×2, manual split_once, redundant guard) so the workspace passes the pre-merge gate.

Test plan

  • Local cargo fmt --all -- --check clean.
  • Local cargo clippy -p hero_collab_server -p hero_collab_ui -p hero_collab --all-targets -- -D warnings clean.
  • Local cargo build -p hero_collab_server -p hero_collab_ui -p hero_collab --release --target x86_64-unknown-linux-musl produces 3 ELF static-pie musl binaries (16.9 MB / 12.9 MB / 9.5 MB).
  • After merge: tag v0.5.0-rc1, confirm 3 release assets land with <bin>-x86_64-unknown-linux-musl names.
  • heroci smoke: service collab install --download --reset fetches all 3 assets and ELF-verifies (after consumer PR on hero_skills lands).
## Summary - Adds `.forgejo/workflows/build-linux.yaml` — on tag push (`v*`), builds and publishes 3 static-pie musl binaries (`hero_collab_server`, `hero_collab_ui`, `hero_collab`) under the target-triple naming convention from [home#212](https://forge.ourworld.tf/lhumina_code/home/issues/212). - Mirrors the canonical pure-musl pipeline already shipping for [hero_proc](https://forge.ourworld.tf/lhumina_code/hero_proc/blob/development/.forgejo/workflows/build-linux.yaml) and [hero_agent](https://forge.ourworld.tf/lhumina_code/hero_agent/blob/development/.forgejo/workflows/build-linux.yaml). - Build is scoped to the 3 shipped crates rather than `--workspace`: `hero_collab_app` is a Dioxus WASM frontend that currently fails its host-linux compile against the latest `hero_archipelagos` development branch (`use_focus_poll` rename + `IslandContext` field drift) — separate archipelago refactor, not a release blocker. `hero_collab_examples` is a test crate. - Includes `cargo fmt --all` (50 files, mechanical) and 16 clippy fixes (doc_lazy_continuation×5, collapsible_if×4 via 2024 if-let chains, type_complexity, dead_code on serde fixtures, assert_eq-with-bool×2, manual split_once, redundant guard) so the workspace passes the pre-merge gate. ## Test plan - [x] Local `cargo fmt --all -- --check` clean. - [x] Local `cargo clippy -p hero_collab_server -p hero_collab_ui -p hero_collab --all-targets -- -D warnings` clean. - [x] Local `cargo build -p hero_collab_server -p hero_collab_ui -p hero_collab --release --target x86_64-unknown-linux-musl` produces 3 ELF static-pie musl binaries (16.9 MB / 12.9 MB / 9.5 MB). - [ ] After merge: tag `v0.5.0-rc1`, confirm 3 release assets land with `<bin>-x86_64-unknown-linux-musl` names. - [ ] heroci smoke: `service collab install --download --reset` fetches all 3 assets and ELF-verifies (after consumer PR on hero_skills lands).
Pre-flight cleanup before adding build-linux.yaml release workflow.

Signed-off-by: mik-tf
16 clippy errors fixed in shipped crates (hero_collab,
hero_collab_server, hero_collab_ui):

- doc_lazy_continuation x5 in attachment_http.rs (indent sub-bullet
  continuation lines)
- collapsible_if x4 (rust 2024 if-let chains in workspace.rs,
  validation.rs, routes.rs, integration.rs)
- type_complexity x1 (allow on test helper closure type)
- dead_code x2 (allow on test fixtures populated via serde
  deny_unknown_fields)
- assert_eq with literal bool x2 (assert!/assert!(!...))
- manual split_once x1 (use split_once().map())
- redundant guard x1 (lift literal into pattern)

No behavior change — pre-merge gate (cargo fmt --check &&
cargo clippy --all-targets -- -D warnings &&
cargo build --release --target x86_64-unknown-linux-musl).
hero_collab_app + hero_collab_examples are out of scope of this
release pipeline; their separate API-drift / clippy debt remains.

Signed-off-by: mik-tf
On tag push (v*), builds 3 statically-linked PIE musl binaries
(hero_collab_server, hero_collab_ui, hero_collab) and uploads
them as Forgejo Release assets + generic Package Registry blobs
under the target-triple naming convention from home#212.

Build is scoped to the 3 shipped crates (-p flag list) rather
than --workspace because:
  - hero_collab_app is a Dioxus WASM frontend (cdylib) consumed
    by hero_os/hero_archipelagos and not shipped as a hero_proc
    binary. It currently fails its host-linux compile against
    the latest hero_archipelagos development branch (use_focus_poll
    rename + IslandContext field drift) — that is a separate
    archipelago refactor, not a release blocker.
  - hero_collab_examples is the load/integration test crate, not
    a runtime artifact.

Mirrors the canonical pure-musl pipeline shipped in:
  https://forge.ourworld.tf/lhumina_code/hero_proc/blob/development/.forgejo/workflows/build-linux.yaml
  https://forge.ourworld.tf/lhumina_code/hero_agent/blob/development/.forgejo/workflows/build-linux.yaml

Closes home#212 progress 20/29 -> 21/29 once tagged + consumed.
Tracked at lhumina_code/home#212

Signed-off-by: mik-tf
mik-tf merged commit 0e91871e7a into development 2026-05-06 20:23:07 +00:00
mik-tf deleted branch development_mik_build_linux 2026-05-06 20:23:07 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/hero_collab!51
No description provided.