Skip to content

conductor 1.8.1

Choose a tag to compare

@b10x-bot b10x-bot released this 13 Nov 23:21
· 30 commits to main since this release

Since 1.8.0:

  • story:anonymous-pod-no-forge-secret: the pod of an instance with forge_access: anonymous carries no forge credential under any entry name. It leaves out every daemon.kubernetes.env entry that names the secret of a forge token of the file (a daemon's, or any instance's forge_token) or holds a forge token's value, and the variables that point git, ssh, git's HTTP library, gh or glab at a credential or a configuration file (GIT_CONFIG_GLOBAL, GIT_CONFIG_SYSTEM, GIT_SSH_COMMAND, SSH_AUTH_SOCK, NETRC and the like); it keeps the installer's proxy and CA settings of git. This fixes the known issue of 1.8.0.
  • The same story: the anonymous clone and fetch read no system or global git configuration, no netrc file and no template, and ask no program for a login. Every command a process starts for such an instance gets plain ssh as GIT_SSH_COMMAND. A fetch is not run while the checkout's own configuration holds an extra header, a cookie file, a TLS client certificate or key or a URL rewrite that cannot be removed, or while the URL git fetches origin from (remote.origin.url, or the legacy file .git/remotes/origin or .git/branches/origin) holds a user or a password; the pass names the key or the place, never the value. Every fetch of such an instance takes this one route, the blockers' and the catalog's read included; it fetches no submodule, and every git the runtime starts, and the pod's environment, carry GIT_NO_LAZY_FETCH=1, so a read of a partial clone fetches no object by itself.
  • The same story: an anonymous instance that also has a forge_token of its own gets no token in its pod, and the daemon does not start it.
  • The same story: the guard denies more spellings of a push, a name given to git in argv[0] included (env -a git-push git …, exec -a git-push git …); the watch and the start's report make no gh or glab call for such an instance and say so in one line; one include entry the listing refuses is one member failure of the pass.
  • For every instance: the guard reads a launcher's options that take a value, a -- after a launcher, an option cluster, the options of exec and a name given to the program in argv[0], so each rule finds the program word behind them. sudo -u root cargo build, timeout -s KILL 5 cargo test, env -u X cargo build, env -a cargo <program> build and exec -a cargo <program> build are now decided as cargo build and cargo test alone are; 1.8.0 allowed them.
  • For every instance: the blockers collector's failure line passes over git's warning: lines when another line follows.

Upgrade: none for a file without the member, but for the guard decisions named above. Beside forge_access: anonymous, a mapping that names secret_syncs, or another instance's forge_token secret under any key, is refused at validation from this release on; a checkout of such an instance whose origin's URL holds a login (https://user@host/..., ssh://git@host/...) is not fetched until the URL is plain.

Not covered, with a draft story each: an extra header in a checkout's worktree configuration file; taskset with a mask, env -S, a shortened long option of env and zsh's ARGV0= before a push.

Container image

ghcr.io/beyond10x/conductor:1.8.1 at digest sha256:b87e4839e5430db0106f6cf65af152181b9514586fc39ba0ec9dd2aa3d6d3715

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