Commit d0cfea951a
Verified · cmc
Layout: unified · split
API.org +25 −3
| @@ -128,9 +128,31 @@ gitbay webhook remove <id> | ||
| 128 | 128 | |
| 129 | 129 | ** Events |
| 130 | 130 | |
| 131 | =push= (data: ref, old, new, forced, deleted), =issue.created=, | |
| 132 | =issue.commented=, =issue.closed=, =issue.open=, =mr.created=, | |
| 133 | =mr.merged= (data: number, sha), =repo.imported= (data: from). | |
| 131 | Every event this forge records, and so every name =--events= may take. | |
| 132 | The server holds the same list as =control.EventKinds=, and a test | |
| 133 | fails if the code emits something not listed or lists something it never | |
| 134 | emits — so this is the whole set, not a sample. =webhook add= refuses a | |
| 135 | name that is not one of them, since a subscription to a typo would | |
| 136 | silently never fire. | |
| 137 | ||
| 138 | - repository: =push= (ref, old, new, forced, deleted), =repo.archived=, | |
| 139 | =repo.unarchived=, =repo.imported= (from) | |
| 140 | - issues: =issue.created=, =issue.edited=, =issue.commented=, | |
| 141 | =issue.closed=, =issue.open=, =issue.labeled= (labels), | |
| 142 | =issue.assigned= (assignees), =issue.milestoned= (milestone) | |
| 143 | - merge requests: =mr.created=, =mr.edited=, =mr.commented=, | |
| 144 | =mr.reviewed= (verdict), =mr.draft= (draft), =mr.retargeted= (from, | |
| 145 | to), =mr.milestoned= (milestone), =mr.merged= (number, sha), | |
| 146 | =mr.closed= | |
| 147 | - releases: =release.created= (tag), =release.deleted= (tag) | |
| 148 | - CI: =status=, =build.success=, =build.failure=, =build.cancelled= | |
| 149 | ||
| 150 | Every payload carries =number= where it names an issue or merge request. | |
| 151 | ||
| 152 | There is deliberately no =repo.deleted=. Both =events.repo_id= and | |
| 153 | =webhooks.repo_id= cascade from =repos=, so recording one would delete | |
| 154 | it — and every webhook that could have received it — in the same | |
| 155 | statement. A repository's deletion is visible in the audit log. | |
| 134 | 156 | |
| 135 | 157 | ** Delivery |
| 136 | 158 | |
Admin.org +11 −1
| @@ -328,7 +328,17 @@ rm /tmp/ci-bootstrap /tmp/ci-bootstrap.pub | ||
| 328 | 328 | gitbay-runner -remote git@127.0.0.1 -workdir /var/lib/gitbay-runner/work |
| 329 | 329 | #+end_src |
| 330 | 330 | |
| 331 | =admin runners= shows which account each runner polls as; an admin key | |
| 331 | =-jobs N= runs N builds at once. Claiming is one transaction that | |
| 332 | selects and updates, and each build works in its own =build-<id>= | |
| 333 | directory, so workers do not collide; idle polls are staggered across | |
| 334 | the interval so N of them do not wake together. The drop-in's weights | |
| 335 | below are per service, not per build, so raising =-jobs= divides them | |
| 336 | rather than multiplying the host's load. | |
| 337 | ||
| 338 | =admin runners= shows which account each runner polls as, and what each | |
| 339 | is scoped to. A runner with no scope claims builds for *any* | |
| 340 | repository, which on an instance with open registration means running a | |
| 341 | stranger's steps; scope one with =-repos owner/name=. An admin key | |
| 332 | 342 | still works for the protocol during a rotation. A merge request head |
| 333 | 343 | from a fork is built in the target repository as untrusted: the claim |
| 334 | 344 | carries no secrets. Same-repository heads were built by their branch |
Parity.org +21 −5
| @@ -40,6 +40,8 @@ browser-only and the iOS build screen unable to say more than the log. | ||
| 40 | 40 | | merge (all strategies) | yes | yes | yes | |
| 41 | 41 | | close | yes | yes | yes | |
| 42 | 42 | | create | yes | yes | yes | |
| 43 | | draft, ready | yes | yes | no | | |
| 44 | | search title and body | yes | yes | no | | |
| 43 | 45 | | create from a fork | yes | no | yes | |
| 44 | 46 | | retarget | yes | yes | no | |
| 45 | 47 | | milestone | yes | yes | yes | |
| @@ -63,6 +65,16 @@ refused while anything is stacked on the merge request, since it would | ||
| 63 | 65 | rewrite the commits the stack builds on. The iOS client renders the |
| 64 | 66 | retarget but has no stack view yet. |
| 65 | 67 | |
| 68 | A draft merge request is open but not asking: it does not merge, and it | |
| 69 | does not appear in anyone's review queue. Draft is a flag rather than a | |
| 70 | fifth state, so every =state = 'open'= rule still means what it did. | |
| 71 | Batched review and range-diff (krz/gitbay#111) are not built. | |
| 72 | ||
| 73 | Nothing asks a *particular* person for a review. The review queue is | |
| 74 | computed from involvement — what you own, are granted, or reach through | |
| 75 | an org or team — so a collaborator with write access who has not touched | |
| 76 | a thread hears nothing until they do (krz/gitbay#145). | |
| 77 | ||
| 66 | 78 | Creating from a fork works anywhere the source can be typed as |
| 67 | 79 | =owner/name:branch=; only the web lacks it. Retargeting moves an open |
| 68 | 80 | merge request onto another branch of the same repository and stales the |
| @@ -74,6 +86,7 @@ reviews, since an approval was of the diff against the old branch. | ||
| 74 | 86 | |---------------------+-----+-----+-----| |
| 75 | 87 | | read, list, filter | yes | yes | yes | |
| 76 | 88 | | filter by label, assignee, author, milestone | yes | yes | no | |
| 89 | | search title and body | yes | yes | no | | |
| 77 | 90 | | create | yes | yes | yes | |
| 78 | 91 | | comment | yes | yes | yes | |
| 79 | 92 | | edit title and body | yes | yes | yes | |
| @@ -183,11 +196,14 @@ now render the way the reference does. go-org is not yet on the corpus. | ||
| 183 | 196 | | command reference | yes | no | n/a | |
| 184 | 197 | |
| 185 | 198 | =explore= is the listing without a query; =repo search= is the one with. |
| 186 | =search= is both plus issue and merge request titles, over everything | |
| 187 | the caller can read; the web serves it at =/search= with a field in the | |
| 188 | rail, and an anonymous visitor gets the public rows from the same query. | |
| 189 | Titles only — body search wants FTS5 and belongs with krz/gitbay#114. | |
| 190 | =repo grep= remains the per-repository file-contents search. | |
| 199 | =search= is both plus the title and body of every issue and merge | |
| 200 | request the caller can read, over FTS5; the web serves it at =/search= | |
| 201 | with a field in the rail, and an anonymous visitor gets the public rows | |
| 202 | from the same query. =issue list --search= and =mr list --search= narrow | |
| 203 | one repository. What someone types is quoted term by term, so an FTS5 | |
| 204 | operator — =c++=, =AND=, a lone quote — is a word to match and never a | |
| 205 | syntax error. =repo grep= remains the per-repository file-contents | |
| 206 | search. | |
| 191 | 207 | |
| 192 | 208 | About text renders as markdown or org-mode per the =about_format= it |
| 193 | 209 | was stored with. The iOS =Profile= decoder lists its keys explicitly, |