-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathplugins.yaml
More file actions
140 lines (138 loc) · 6.1 KB
/
Copy pathplugins.yaml
File metadata and controls
140 lines (138 loc) · 6.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# THE first-party plugin registry — the single source of truth for "what plugins exist".
#
# Every system that needs the plugin list derives it from this file rather than carrying its own
# copy: scripts/plugin-registry-check.sh (the CI gate that keeps the consumers honest),
# dev-gate.yml's sibling checkouts, scripts/release-check.sh's per-plugin phases, and the release
# tooling. Found necessary during the 1.5.0 ship: the list was duplicated across at least five
# places, and the copies had drifted — the "full plugin gate" silently covered 6 of 8 plugins.
#
# Adding a plugin = adding ONE entry here. The registry gate then goes RED until every consumer
# actually covers it (dev-gate checkout present, release-check phase present, release published) —
# coverage is enforced, not remembered.
#
# Fields:
# repo: GitHub repo under GetBusbar/
# kind: store | auth | hook | secret (busbar plugin kind; selects the C ABI)
# alias: short config name (busbar-plugin-pack --alias)
# crate: the plugin cdylib's Cargo package name
# version_line: the semver line current releases live on (headroom's 1.x is pre-plugin
# 1.4.2-era and must never be retagged)
# service: real backend container its tests need (mysql|postgres|valkey|vault|none)
# release_gate: required — release-check.sh hard-fails if the sibling checkout is missing
# optional — release-check.sh loud-skips (still red in the registry gate's
# release check; "optional" only softens a LOCAL run without the checkout)
# gate: HOW release-check.sh covers this plugin:
# suite — the UNIFORM pattern: release-check.sh's registry-driven loop boots the
# entry's `service` container (if any), exports that service's
# BUSBAR_TEST_* env, and runs `cargo test --workspace --release` in the
# sibling checkout. Adding a `gate: suite` plugin needs NO script edit
# unless it introduces a brand-new `service` value.
# binary — a genuinely-special explicit phase driving the plugin through a full
# busbar binary (real HTTP traffic + restart durability). sqlite only.
# smoke — a genuinely-special explicit phase: pack the cdylib and prove a real
# busbar --validate dlopens it. The hook plugins.
# The registry gate enforces that binary/smoke plugins still have an explicit
# phase touching ../<dir>, and that the suite loop + every `service` a suite
# plugin declares are actually handled in release-check.sh.
#
# Optional fields:
# checkout_dir: local sibling/checkout directory name when it differs from `repo`
# (no entry needs it today; kept for the next repo rename)
# checkout_ref: git ref the qa-gate's registry-driven clone loop checks the repo out at.
# DEFAULT: `dev`, NOT the repo's default branch. Every first-party repo runs
# busbar's own branch model (main = release-only, dev = ongoing work), so a
# sibling's `main` is pinned to its last RELEASE and cannot carry the plugin-side
# adaptation to the unreleased core this gate exists to test. qa-gate-run.sh's
# `siblings` documents the five legs that cost. Set this only for a repo that
# departs from that model; it falls back to the default branch when `dev` is absent.
# Org repos that MATCH the plugin naming pattern but are deliberately NOT plugins (the reverse
# check in plugin-registry-check.sh flags any pattern-matching org repo that is neither listed
# above nor excluded here — so a new plugin repo cannot exist unregistered).
excluded_repos:
- hindsight-hook # design docs only — no crate, no workflows, private
plugins:
- repo: store-mysql
kind: store
alias: mysql
crate: busbar-store-mysql-plugin
version_line: "1.0"
service: mysql
release_gate: optional
gate: suite
- repo: store-postgres
kind: store
alias: postgres
crate: busbar-store-postgres-plugin
version_line: "1.0"
service: postgres
release_gate: required
gate: suite
- repo: store-sqlite
kind: store
alias: sqlite
crate: busbar-store-sqlite-plugin
version_line: "1.0"
service: none
release_gate: optional
gate: binary
- repo: store-valkey
kind: store
alias: valkey
crate: busbar-store-valkey-plugin
version_line: "1.0"
service: valkey
release_gate: optional
gate: suite
- repo: hashicorp-vault
kind: secret
alias: vault
crate: busbar-hashicorp-vault-plugin
version_line: "1.0"
service: vault
release_gate: optional
gate: suite
- repo: auth-oidc
kind: auth
alias: oidc
crate: busbar-auth-oidc-plugin
version_line: "1.0"
service: none
release_gate: optional
gate: suite
- repo: auth-github
kind: auth
alias: github
crate: busbar-auth-github-plugin
version_line: "1.0"
service: none
release_gate: optional
gate: suite
- repo: auth-ldap
kind: auth
alias: ldap
crate: busbar-auth-ldap-plugin
version_line: "1.0"
service: none
release_gate: optional
gate: suite
- repo: webrequest-hook
kind: hook
alias: webrequest
crate: busbar-webrequest-hook-plugin
version_line: "1.0"
service: none
release_gate: optional
gate: smoke
- repo: headroom-hook
kind: hook
alias: headroom
crate: headroom-hook
version_line: "2.0"
service: none
release_gate: optional
gate: smoke
# No `checkout_ref` here any more, and that is not a loosening. This entry used to pin `dev`
# because it carries the sibling-relative-path dependency fix the gate's build needs; `dev` is
# now the DEFAULT for every sibling (see the field doc above), so the pin said nothing the
# default does not. Restating it would imply the OTHER nine were deliberately on `main`, which
# is precisely the reading that cost qa-gate run 31059945604 five legs.