mesh/delivery-group group fix/121-genesis-package-registry delivering: 2 of 4 delivered
mesh/merge-gate head a641ed7d15c7 merged into trunk b12c4b82e820 — pass: builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step; every …
mesh/repo-check head a641ed7d15c7 merged into trunk b12c4b82e820 — pass: its merge-check.sh passed
mesh/delivery delivered
With npm-package-registry optional, the binding file the agent's environment names may be absent, and mesh-builder failed every build on reading it. It now reads the genesis document the installer seals at genesis's packages step when no binding is present, prefers the binding when both are, and each build's log says which it resolved from (§4). A build that needs the registry - a package, an image naming .npmrc, TypeScript with an @novox/ dependency - on an agent with neither is refused before anything is built or published, naming the machine, the unbound requirement and gitea (§6); it never falls back to the public registry. The captured catalogue moves to the mesh-catalog change it is judged with.
169 lines
5.5 KiB
Plaintext
169 lines
5.5 KiB
Plaintext
{
|
|
"module": "docker",
|
|
"version": "1",
|
|
"capabilities": [
|
|
"package-manager",
|
|
"service-manager",
|
|
"privileged"
|
|
],
|
|
"invokes": [
|
|
"seat:mesh-controller.images"
|
|
],
|
|
"claims": [
|
|
{
|
|
"name": "node-container-runtime",
|
|
"scope": "node"
|
|
}
|
|
],
|
|
"tools": [
|
|
"docker_list",
|
|
"docker_inspect",
|
|
"docker_resolv_conf",
|
|
"docker_logs",
|
|
"docker_secrets_in_logs",
|
|
"docker_secrets_in_events",
|
|
"docker_stats",
|
|
"docker_start",
|
|
"docker_stop",
|
|
"docker_restart",
|
|
"docker_top",
|
|
"docker_images",
|
|
"docker_prune",
|
|
"docker_prune_images",
|
|
"docker_disk_usage",
|
|
"docker_networks",
|
|
"docker_volumes",
|
|
"docker_events",
|
|
"docker_daemon_config",
|
|
"docker_unlabelled",
|
|
"docker_problems",
|
|
"docker_ports"
|
|
],
|
|
"replaces": {
|
|
"docker_resolv_conf": [
|
|
"docker exec cat /etc/resolv.conf"
|
|
]
|
|
},
|
|
"settings": {
|
|
"log-max-size": {
|
|
"kind": "preference",
|
|
"default": "100m",
|
|
"why": "each container's log is cut at this size and the runtime keeps log-max-file of them, so 100m and 10 hold about 1 GB per container: what the one machine with rotation set by hand has (novox/hq issue 452). A whole number from 1 with k, m or g after it, refused before daemon.json is written. The runtime reads it only at its next start, which the mesh never forces, and a container created before that keeps the options it was created with until it is created again"
|
|
},
|
|
"log-max-file": {
|
|
"kind": "preference",
|
|
"default": 10,
|
|
"why": "how many of a container's log files of log-max-size the runtime keeps, the oldest dropped first; a count from 1 to 99, refused before daemon.json is written, taken at the runtime's next start and by containers created after it, like log-max-size (novox/hq issue 452)"
|
|
}
|
|
},
|
|
"resources": [
|
|
{
|
|
"id": "package",
|
|
"type": "package",
|
|
"package": "docker"
|
|
},
|
|
{
|
|
"id": "buildx",
|
|
"type": "package",
|
|
"package": "docker-buildx"
|
|
},
|
|
{
|
|
"id": "socket",
|
|
"type": "service",
|
|
"unit": "docker.socket",
|
|
"state": "running",
|
|
"boot": "enabled"
|
|
},
|
|
{
|
|
"id": "state",
|
|
"type": "directory",
|
|
"mode": "0700",
|
|
"place": "mesh"
|
|
},
|
|
{
|
|
"id": "log-rotation",
|
|
"type": "file",
|
|
"path": "${dir:state}/log-rotation.conf",
|
|
"mode": "0600",
|
|
"trusted": true,
|
|
"content": "# The log rotation daemon.json takes, written by the mesh from this machine's settings log-max-size and\n# log-max-file, and judged by the step log-rotation-check before daemon.json is written (novox/hq issue 452).\n# Replaced on every push; change the settings, never this file.\nsize=${setting:log-max-size}\nfiles=${setting:log-max-file}\n"
|
|
},
|
|
{
|
|
"id": "log-rotation-check",
|
|
"type": "process",
|
|
"name": "docker-log-rotation-check",
|
|
"artifact": "tools",
|
|
"run": [
|
|
"./docker-tools",
|
|
"check-log-rotation"
|
|
],
|
|
"run-once": true,
|
|
"env": {
|
|
"DOCKER_LOG_ROTATION": "${dir:state}/log-rotation.conf"
|
|
},
|
|
"restart-on": [
|
|
"log-rotation"
|
|
]
|
|
},
|
|
{
|
|
"id": "daemon",
|
|
"type": "file",
|
|
"path": "/etc/docker/daemon.json",
|
|
"mode": "0644",
|
|
"into": "json",
|
|
"trusted": true,
|
|
"content": "{\"live-restore\": true, \"insecure-registries\": [\"${seat:mesh-artifact-store:reach}\"], \"log-driver\": \"json-file\", \"log-opts\": {\"max-size\": \"${setting:log-max-size}\", \"max-file\": \"${setting:log-max-file}\"}}\n"
|
|
},
|
|
{
|
|
"id": "runtime",
|
|
"type": "service",
|
|
"unit": "docker.service",
|
|
"state": "running",
|
|
"boot": "enabled",
|
|
"reload-on": [
|
|
"daemon"
|
|
]
|
|
},
|
|
{
|
|
"id": "prune-service",
|
|
"type": "file",
|
|
"path": "/etc/systemd/system/docker-prune.service",
|
|
"mode": "0644",
|
|
"content": "# Generated by the mesh. Do not edit — module docker writes this file and replaces it at every push.\n[Unit]\nDescription=Prune dangling images and unused build cache (the mesh's docker module)\n# Never volumes, never a container, never an image a container uses: dangling\n# images and build cache nothing refers to, unused for a week. What a person\n# prunes beyond that is docker_prune's, by hand.\nAfter=docker.service\nConditionPathExists=/run/docker.sock\n\n[Service]\nType=oneshot\nNice=19\nIOSchedulingClass=idle\nExecStart=/usr/bin/docker image prune --force --filter until=168h\nExecStart=/usr/bin/docker builder prune --force --filter until=168h\n"
|
|
},
|
|
{
|
|
"id": "prune-timer",
|
|
"type": "file",
|
|
"path": "/etc/systemd/system/docker-prune.timer",
|
|
"mode": "0644",
|
|
"content": "# Generated by the mesh. Do not edit — module docker writes this file and replaces it at every push.\n[Unit]\nDescription=Weekly prune of dangling images and unused build cache (the mesh's docker module)\n\n[Timer]\nOnCalendar=weekly\nRandomizedDelaySec=1h\nPersistent=true\n\n[Install]\nWantedBy=timers.target\n"
|
|
},
|
|
{
|
|
"id": "prune",
|
|
"type": "service",
|
|
"unit": "docker-prune.timer",
|
|
"state": "running",
|
|
"boot": "enabled",
|
|
"restart-on": [
|
|
"prune-service",
|
|
"prune-timer"
|
|
]
|
|
}
|
|
],
|
|
"build": {
|
|
"artifacts": [
|
|
{
|
|
"name": "tools",
|
|
"kind": "bundle",
|
|
"language": "go",
|
|
"system": "arch",
|
|
"from": "cmd/docker-tools",
|
|
"binary": "docker-tools",
|
|
"loads": [
|
|
"docker-tools"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|