Skip to content

v1.5.0

Choose a tag to compare

@b10x-bot b10x-bot released this 12 Nov 22:03
· 65 commits to main since this release

Stories implemented since v1.4.0: none moved to implemented. Built in this release under six stories that stay drafts until the operator accepts them:

  • instance-forge-token: an instance mapping takes forge_token: secret:<name>; its pod carries that token and not the daemon's. Without it a pod gets the daemon's forge token only where the instance has a source on that token's forge host.
  • pod-git-reaches-forge: git over HTTPS in an instance pod authenticates through git's credential helper with the token the pod carries (GIT_CONFIG_COUNT, GIT_CONFIG_KEY_<n>, GIT_CONFIG_VALUE_<n>, written by the daemon unless daemon.kubernetes.env names them).
  • source-include-list: a github or gitlab source takes include, the list of repositories it stands for, beside exclude.
  • pod-source-checkouts: a runtime alone in an instance pod clones the repositories its sources name under include, at its start and at each collect pass, and nothing else. A clone that fails is a member failure in GET /v1/instances/{name}/health and stops no other clone. A pod takes one snapshot at its start; a repository is trusted for the harness only where an include entry covers it. conductor doctor in the pod says how many included repositories have no checkout.
  • daemon-version-json: GET /v1/version answers [{"config":"conductor.config/2","version":"<version>"}].
  • instance-secret-state: GET /v1/instances/{name}/secrets answers, per secret an instance mapping names, its name, whether it is set and since when. No value; the daemon's own secrets, the forge secrets and those of daemon.kubernetes.env are withheld.

Also in this release:

  • A snapshot keeps its commands in its own process group and, at its end, stops what they left running in that group.
  • The dispatch records take a work source's reference in place of a goal, and hold links.
  • An instance pod's environment carries GLAB_SEND_TELEMETRY=false unless the operator's own entry sets it.
  • The workspace compiles clean under Rust 1.100.0.

At upgrade from v1.4.0 the daemon replaces every instance pod once, at its first pass, since the pod's environment changed; the volume claims are kept.

Known limits: those of v1.4.0 stand, except that a forge token in a pod is now shown, on a test cluster against a forge double. Not shown yet: a clone, fetch or push against a real forge with a real token, the github clone path on a cluster, an agent session started inside an instance pod, a clone that hangs at a pod's start. Handing work to an instance over HTTP is not in this release.

Container image

ghcr.io/beyond10x/conductor:1.5.0 at digest sha256:07338dda8b5981475556f081e18af90a5f22b4ed7fecf2a5cb13e50306573fb5

docker run --rm ghcr.io/beyond10x/conductor:1.5.0 conductor --version