mesh/merge-gate head e0bc919d4945 merged into trunk f88e3452f8b8 — pass: builds build-agent → ace, g14, novox, shanks; no bus step; every machine composes …
mesh/repo-check head e0bc919d4945 merged into trunk f88e3452f8b8 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
mesh/delivery-group group fix/121-genesis-package-registry delivering: 2 of 4 delivered
mesh/delivery held for a person: its group fix/121-genesis-package-registry's composed check did not pass for the heads that merged; a person decides tha…
build-agent's npm-package-registry becomes optional, so genesis's step 13 is no longer refused with 'nothing provides npm-package-registry'. Until gitea is assigned, the agent on genesis's node reads the genesis-package-registry own-secret the installer seals at the packages step; it is issued outside the mesh, so no other machine is given one. The binding and its credential are composed only while bound (ADR 0330 §6), and no file names them otherwise.
117 lines
2.9 KiB
JSON
117 lines
2.9 KiB
JSON
{
|
|
"module": "build-agent",
|
|
"version": "1",
|
|
"slug": "agent",
|
|
"capabilities": [
|
|
"container-runtime"
|
|
],
|
|
"claims": [
|
|
{
|
|
"name": "node-build-agent",
|
|
"scope": "node",
|
|
"serves": ["current", "kill", "pause", "resume"]
|
|
}
|
|
],
|
|
"requires": [
|
|
"artifact-store",
|
|
{
|
|
"name": "npm-package-registry",
|
|
"optional": true
|
|
}
|
|
],
|
|
"binds": {
|
|
"npm-package-registry": "${dir:mesh-state}/package-registry.json"
|
|
},
|
|
"secrets": {
|
|
"npm-package-registry": "${dir:mesh-state}/package-registry.secret"
|
|
},
|
|
"own-secrets": {
|
|
"broker": "${dir:mesh-state}/broker",
|
|
"genesis-package-registry": {
|
|
"path": "${dir:mesh-state}/genesis-package-registry.json",
|
|
"issued-by": "outside"
|
|
}
|
|
},
|
|
"data": {
|
|
"own": [
|
|
{
|
|
"id": "workspace",
|
|
"path": "${dir:workspace}",
|
|
"class": "cache",
|
|
"why": "a build's working copy, cloned again for every build"
|
|
}
|
|
]
|
|
},
|
|
"resources": [
|
|
{
|
|
"id": "mesh-state",
|
|
"type": "directory",
|
|
"mode": "0700",
|
|
"place": "mesh"
|
|
},
|
|
{
|
|
"id": "workspace",
|
|
"type": "directory",
|
|
"mode": "0700"
|
|
},
|
|
{
|
|
"id": "agent-env",
|
|
"type": "file",
|
|
"path": "${dir:mesh-state}/build-agent.env",
|
|
"mode": "0600",
|
|
"content": "MESH_BROKER_FILE=/run/mesh/broker\nMESH_NODE=${machine:name}\nMESH_REGISTRY=${bound:artifact-store:at}:${bound:artifact-store:port}\nMESH_PACKAGE_BINDING=/run/mesh/package-registry.json\nMESH_NPM_TOKEN_FILE=/run/mesh/package-registry.secret\nMESH_GENESIS_PACKAGE_REGISTRY=/run/mesh/genesis-package-registry.json\nMESH_WORKSPACE=${dir:workspace}\n"
|
|
},
|
|
{
|
|
"id": "server",
|
|
"type": "container",
|
|
"name": "mesh-build-agent",
|
|
"artifact": "server",
|
|
"env-file": [
|
|
"${dir:mesh-state}/build-agent.env"
|
|
],
|
|
"volumes": [
|
|
"${dir:mesh-state}:/run/mesh:ro",
|
|
"${dir:workspace}:${dir:workspace}",
|
|
"/var/run/docker.sock:/var/run/docker.sock"
|
|
],
|
|
"restart-on": [
|
|
"agent-env"
|
|
],
|
|
"network": "host",
|
|
"health": {
|
|
"kind": "exec",
|
|
"command": "/usr/local/bin/mesh-builder ready",
|
|
"interval": "10s",
|
|
"timeout": "5s",
|
|
"looks": 3,
|
|
"grace": "60s"
|
|
}
|
|
}
|
|
],
|
|
"build": {
|
|
"artifacts": [
|
|
{
|
|
"name": "server",
|
|
"kind": "image",
|
|
"from": "Dockerfile",
|
|
"compiles": "cmd/mesh-builder",
|
|
"context": {
|
|
"seat": "git",
|
|
"repository": "novox/mesh-controller",
|
|
"ref": "main"
|
|
}
|
|
}
|
|
],
|
|
"on": [
|
|
{
|
|
"arg": "GO_BASE",
|
|
"image": "golang@sha256:8ac98ca534ac3f51e1f420a1dd2c15e74c75cfa0f23f3ad27eb5d7236c349a0c"
|
|
},
|
|
{
|
|
"arg": "ALPINE_BASE",
|
|
"image": "alpine@sha256:d9e853e87e55526f6b2917df91a2115c36dd7c696a35be12163d44e6e2a4b6bc"
|
|
}
|
|
]
|
|
}
|
|
}
|