A proposed delivery whose asked check no queue entry holds stayed proposed for good (met in 1311, 1336, 1726, 1792, 1795, 1833). The sweep reads the controller's queue and asks again past max(10 minutes, the repository's last check time); recheck from proposed is taken on the same fact; never while the queue holds one.
151 lines
3.4 KiB
JSON
151 lines
3.4 KiB
JSON
{
|
|
"module": "mesh-delivery-gate",
|
|
"version": "1",
|
|
"slug": "gate",
|
|
"claims": [
|
|
{
|
|
"name": "mesh-delivery",
|
|
"scope": "mesh",
|
|
"serves": [
|
|
"deliveries",
|
|
"times",
|
|
"show",
|
|
"groups",
|
|
"what-if",
|
|
"checks",
|
|
"table",
|
|
"stalled",
|
|
"recheck",
|
|
"release",
|
|
"stop",
|
|
"close",
|
|
"retire-history"
|
|
]
|
|
}
|
|
],
|
|
"consumes": [
|
|
"gitea.pull.updated",
|
|
"gitea.pull.merged",
|
|
"gitea.pull.closed",
|
|
"gitea.forge.status",
|
|
"gitea.forge.pull-request.edited",
|
|
"gitea.forge.pull-request.closed",
|
|
"mesh-controller.checked",
|
|
"mesh-controller.plan-moved",
|
|
"mesh-delivery-forge-bridge.forge.**",
|
|
"mesh-config.config-changed"
|
|
],
|
|
"emits": [
|
|
"transition",
|
|
"group",
|
|
"merged"
|
|
],
|
|
"invokes": [
|
|
"seat:mesh-controller.deliver",
|
|
"seat:mesh-controller.delivery-stop",
|
|
"seat:mesh-controller.delivery-backups-again",
|
|
"seat:mesh-controller.delivery-walks",
|
|
"seat:mesh-controller.delivery-check",
|
|
"seat:mesh-controller.forget-checks",
|
|
"seat:mesh-controller.queue",
|
|
"seat:mesh-controller.plans",
|
|
"gitea.gitea_commit_statuses",
|
|
"gitea.gitea_contains",
|
|
"gitea.gitea_open_pulls"
|
|
],
|
|
"state": [
|
|
"deliveries",
|
|
"groups",
|
|
"pulls",
|
|
{
|
|
"name": "asks",
|
|
"history": 5
|
|
},
|
|
{
|
|
"name": "merges",
|
|
"history": 10
|
|
},
|
|
{
|
|
"name": "owed",
|
|
"history": 5
|
|
},
|
|
{
|
|
"name": "source",
|
|
"history": 64
|
|
}
|
|
],
|
|
"reads": [
|
|
"mesh-delivery.deliveries",
|
|
"mesh-delivery.groups",
|
|
"mesh-delivery.pulls",
|
|
"mesh-delivery-teller.answers",
|
|
"mesh-controller.assignments",
|
|
"node-engine.have"
|
|
],
|
|
"tools": [
|
|
"delivery_status"
|
|
],
|
|
"config": {
|
|
"refusal-stall-floor-minutes": {
|
|
"type": "number",
|
|
"description": "minutes, at least, before a merge refused because its trunk moved, whose check the gate asked again, is said as stalled; twice the repository's last check time when that is longer (ADR 0505 §4).",
|
|
"minimum": 1,
|
|
"maximum": 1440,
|
|
"trusted": false,
|
|
"default": 10
|
|
},
|
|
"author-new-head-minutes": {
|
|
"type": "number",
|
|
"description": "minutes a delivery that needs its author's new head (a conflict, a failed check, a rejected group) waits for one before the operator hears of it (ADR 0505 §5).",
|
|
"minimum": 1,
|
|
"maximum": 10080,
|
|
"trusted": false,
|
|
"default": 120
|
|
}
|
|
},
|
|
"resources": [
|
|
{
|
|
"id": "state",
|
|
"type": "directory",
|
|
"mode": "0700",
|
|
"place": ".",
|
|
"unknown": "program"
|
|
},
|
|
{
|
|
"id": "settings",
|
|
"type": "file",
|
|
"path": "${dir:state}/settings.json",
|
|
"mode": "0600",
|
|
"takes-config": [
|
|
"refusal-stall-floor-minutes",
|
|
"author-new-head-minutes"
|
|
],
|
|
"merge": "json",
|
|
"template": "files/settings.json"
|
|
}
|
|
],
|
|
"build": {
|
|
"artifacts": [
|
|
{
|
|
"name": "tools",
|
|
"kind": "bundle",
|
|
"language": "go",
|
|
"system": "arch",
|
|
"from": "cmd/mesh-delivery-gate",
|
|
"binary": "mesh-delivery-gate",
|
|
"loads": [
|
|
"mesh-delivery-gate"
|
|
],
|
|
"env": {
|
|
"MESH_DELIVERY_GATE_SETTINGS": "${dir:state}/settings.json"
|
|
}
|
|
},
|
|
{
|
|
"name": "files",
|
|
"kind": "archive",
|
|
"from": "files"
|
|
}
|
|
]
|
|
}
|
|
}
|