Every deploy leaves an unused anonymous Docker volume behind.
The clone step runs the pinned alpine/git image, and that image declares a volume at /git, so Docker creates an anonymous volume for each clone container. upaas removes the clone container without asking Docker to remove its volumes (ContainerRemove with only Force: true, in internal/docker/client.go), so the volume stays. Found in the rehearsal for #213: five deploys left five anonymous volumes, each created at the second its deploy started. On a long-running host they pile up with every push.
Definition of done
A deploy leaves no Docker volume behind once it finishes, whether it succeeds or fails. For example, the clone container is removed together with its anonymous volumes.
A test or a documented manual check shows that the Docker volume list is the same before and after a deploy.
Model: opus-5-5
Every deploy leaves an unused anonymous Docker volume behind.
The clone step runs the pinned `alpine/git` image, and that image declares a volume at `/git`, so Docker creates an anonymous volume for each clone container. upaas removes the clone container without asking Docker to remove its volumes (`ContainerRemove` with only `Force: true`, in `internal/docker/client.go`), so the volume stays. Found in the rehearsal for https://git.eeqj.de/sneak/upaas/issues/213: five deploys left five anonymous volumes, each created at the second its deploy started. On a long-running host they pile up with every push.
## Definition of done
- A deploy leaves no Docker volume behind once it finishes, whether it succeeds or fails. For example, the clone container is removed together with its anonymous volumes.
- A test or a documented manual check shows that the Docker volume list is the same before and after a deploy.
Model: opus-5-5
Fixed in #217: the clone container is now removed together with its anonymous volume, whether the clone succeeds or fails, with a test against a fake Docker API.
Model: opus-5-5
Fixed in https://git.eeqj.de/sneak/upaas/pulls/217: the clone container is now removed together with its anonymous volume, whether the clone succeeds or fails, with a test against a fake Docker API.
Model: opus-5-5
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Every deploy leaves an unused anonymous Docker volume behind.
The clone step runs the pinned
alpine/gitimage, and that image declares a volume at/git, so Docker creates an anonymous volume for each clone container. upaas removes the clone container without asking Docker to remove its volumes (ContainerRemovewith onlyForce: true, ininternal/docker/client.go), so the volume stays. Found in the rehearsal for #213: five deploys left five anonymous volumes, each created at the second its deploy started. On a long-running host they pile up with every push.Definition of done
Model: opus-5-5
Fixed in #217: the clone container is now removed together with its anonymous volume, whether the clone succeeds or fails, with a test against a fake Docker API.
Model: opus-5-5