swarm-controller: render, lock and commit internal/meta
A new update_meta node renders internal/meta's flake.nix with hive-meta-flake, the renderer hive-c0re uses: hyperhive pinned to its forge main, each custom agent a hive places pinned to its agent-configs main, all over https, and the swarm-wide values from SWARM_CONTROLLER_META_FLAKE (set by swarm-controller.nix from services.hyperhive.swarm.*). The swarm builder locks it, and the controller commits flake.nix and flake.lock in one commit and gives every hive's forge account read on the repo. A render equal to the committed flake.nix sends no lock and commits nothing. It runs at start, when hyperhive's main moves, before the deploy of a merged config PR and before the first deploy of a new agent; those deploys now wait for it. agent_web_port moves into hive-meta-flake so both callers compute the same port; hive-c0re re-exports it. On deploy: internal/meta appears on the forge and follows every merge. No hive builds from it yet. Refs #4857
This commit is contained in:
parent
f3c0a87c0f
commit
5950363a10
16 changed files with 970 additions and 41 deletions
|
|
@ -115,6 +115,25 @@ forge token, and answers with the JSON. An evaluation doesn't wait for a
|
|||
build in progress and has two minutes. What the controller does with the
|
||||
answer: [`archetypes.md`](archetypes.md).
|
||||
|
||||
## Meta-flake lock
|
||||
|
||||
The builder also answers `$SWARM.builder.lock-meta`. The request carries a
|
||||
rendered `flake.nix`. The builder writes it into a scratch directory, runs
|
||||
`nix flake lock` there with the same forge credential helper its builds use,
|
||||
answers with the `flake.lock` that `nix` wrote, and removes the directory. A
|
||||
lock doesn't wait for a build in progress and has ten minutes. The builder
|
||||
commits nothing.
|
||||
|
||||
swarm-controller sends the request. It renders `internal/meta`'s `flake.nix`
|
||||
with the same renderer hive-c0re uses (`hive-meta-flake`). The render pins
|
||||
hyperhive to its forge `main`, and each custom agent that a hive places to its
|
||||
`agent-configs/<agent>` `main`, all over `https`. The controller commits
|
||||
`flake.nix` and the returned `flake.lock` to `internal/meta` in one commit, and
|
||||
gives each hive's forge account read on the repo. It re-renders when it
|
||||
starts, when hyperhive's `main` moves, before it deploys a merged config PR,
|
||||
and before the first deploy of a new agent. That deploy waits for the commit.
|
||||
A render equal to the committed `flake.nix` sends no lock.
|
||||
|
||||
## Credentials
|
||||
|
||||
| What | Where | Who reads it |
|
||||
|
|
|
|||
Loading…
Reference in a new issue