Rene Nochebuena 2224727bbe
einherjar/ci: main / gate (push) Successful in 8s
test / test (push) Successful in 11s
einherjar/ci: main / release (push) Successful in 5s
chore: name CoreDevelopers as the only code owner
Co-authored-by: Rene Nochebuena Guerrero <rene@nochebuena.dev>
2026-10-04 17:42:06 +00:00

ci

Scoped workflows for every einherjar repository.

What this repository is

Gitea reads .gitea/scoped_workflows/ from here and runs those workflows on every repository owned by the einherjar organisation, once this repository is registered at einherjar → Settings → Actions → Scoped Workflows.

.gitea/scoped_workflows/   pr.yml, title.yml, main.yml   run on every einherjar repo
.gitea/workflows/          test.yml                      runs on this repository only

Read this before changing anything

  • Scoped workflows are read from this repository's default branch only. There is no tag and no pin: what is on main is what every repository runs, from the moment it merges. A mistake here is a mistake in 17 repositories at once.
  • main is protected and reviewed by a person. Agents are not code owners of this repository, deliberately — see .gitea/CODEOWNERS.
  • test.yml exercises these workflows here before they reach anything else. It is the only safety net this design has.
  • A required status check that never posts blocks every merge in the organisation. Mark a check required only after its first green run. Branch protection is configured by an organisation owner, not from here.
  • on: schedule and on: workflow_run are not supported in scoped workflows.

Pull request titles

The title becomes the squash subject on main, and merging it is the release.

Title Merging it
patch | fix(web): close the body on decode errors releases the next patch
minor | feat(core): add Code.Slug releases the next minor
major | feat(web)!: drop Bind releases the next major — the module path must already end in /vN
docs(core): explain the issue pointer releases nothing; ci, chore and test likewise

Every releasing merge takes its own number: two patch merges are x.y.1 then x.y.2. The api phase checks the claimed bump against the actual API change, and a ci, docs, chore or test title may not change the API at all. Branches are <type>/<slug>.

A title that releases nothing must also change nothing that ships. The scope phase holds each non-releasing type to the files it names: docs to Markdown and docs/, test to *_test.go and testdata/, ci to .gitea/, Markdown and lint configuration, and chore to anything but non-test Go source, go.mod, go.sum and a Dockerfile.

Status checks

Scoped workflows report as einherjar/ci: <workflow> / <job> (<event>), so every einherjar repository reports the same context names. The exact strings are read from a real pull request head before they are required anywhere.

S
Description
Scoped workflows for every einherjar repository.
Readme
140 KiB
0 Stars 3 Watchers 0 Forks
Languages
CODEOWNERS 100%