Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/content/docs/setup/bindings.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ this process or in a `docker run` container when `runtime:` is set.
Per binding you can override:

- the branch list
- path patterns (`frontend/**`; empty means every path)
- the check name
- the pipeline file path
- the timeout
Expand Down
3 changes: 2 additions & 1 deletion src/content/docs/start/comparison.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ Bitbucket, and Forgejo.

Pick Woodpecker if you want steps that are not install/test/build, matrix
builds, artifacts between steps, more than one machine running jobs, or a forge
that is not GitHub.
that is not GitHub. A binding path filter here skips one Check Run when no
file matches; it is not a matrix of jobs per directory.

Pick openpreflight if the server-plus-agent split is more than you want to
run for a handful of private repos, and a Check Run that says pass or fail with
Expand Down
9 changes: 5 additions & 4 deletions src/content/docs/start/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,10 +81,11 @@ Single row, `id = 1`. Changed from **Settings** in the UI or

Per repo, highest first at run time: **binding → App → settings**.

A binding can override branches, check name, pipeline file, timeout,
install/test/build commands, and whether logs are shareable. The bindings
table is itself the allow-list: a signed webhook for a repo with no enabled
binding is dropped.
A binding can override branches, paths, check name, pipeline file, timeout,
install/test/build commands, and whether logs are shareable. Empty paths means
every path. A complete file list with no match skips (Check Run `skipped`)
before clone. The bindings table is itself the allow-list: a signed webhook for
a repo with no enabled binding is dropped.

## Pipeline file

Expand Down
21 changes: 8 additions & 13 deletions src/content/docs/start/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,19 +71,14 @@ try it, an issue saying which version and what broke is useful.

## Does it work for monorepos?

It runs, but it will run everything on every push.

There is no path filter. A binding matches a repo and optionally a branch list
(exact names, or a `release/*` prefix), and that is the whole filter. A commit
touching one directory runs the same `install`, `test`, and `build` as a commit
touching all of them.

A plan is also exactly three steps in a fixed order, so the usual monorepo
answer (one job per affected package, in parallel) has nothing to express
itself with. Combined with `max_concurrent_jobs` defaulting to 1, a busy
monorepo is the case this is worst at. Do the path filtering inside your own
`test` command, or use a tool built for it; see
[Comparison](/start/comparison/).
A binding can list path patterns (`frontend/**`, comma or newline). Empty
paths is every path, as before. When the file list for the SHA is complete
and nothing matches, the job is **skipped** (Check Run conclusion `skipped`)
before clone, so required checks do not hang. If GitHub truncates the list
(300 files) or the commits API errors, the job still runs.

It is still one job and three steps, not a matrix of jobs per directory.
Woodpecker still wins for fan-out; see [Comparison](/start/comparison/).

## Does the project use itself for CI?

Expand Down
2 changes: 1 addition & 1 deletion src/content/docs/using/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ aliases that mirror `PATCH` / `DELETE` for the HTML UI are omitted.
| Method | Path | Purpose |
|---|---|---|
| `GET` | `/api/v1/bindings` | List bindings |
| `PUT` | `/api/v1/bindings` | Upsert one repo binding |
| `PUT` | `/api/v1/bindings` | Upsert one repo binding (`paths` optional) |
| `POST` | `/api/v1/bindings/bulk` | Picker checkboxes |
| `POST` | `/api/v1/bindings/{id}/toggle` | Enable / disable |
| `DELETE` | `/api/v1/bindings/{id}` | Remove binding |
Expand Down