claude-codeandClaude Opus 5.5 61c96e7873
werkator build succeeded after 04:18
ai-review/assessment human review required; a human approval unlocks the merge; a human review request is pending; merge already scheduled
ai-review/gate build succeeded after 06:01
ai-review/codex human 👤: approve the head to unlock the merge
Docker build paths are checked only where an image is built; texts follow the new build rule
Review of werkrevisor: the check refused a docker.context or docker.dockerfile that nothing reads,
beside a native build or a used-as-is image, and could stop a start for nothing. The init template,
docs/configuration.md and the KDoc of DockerConfig.dockerfile no longer speak of a rebuild when
stale. The architecture skill keeps the line of main and says the change in lines of its own.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 22:27:32 +02:00
2026-09-11 12:22:29 +02:00
2026-06-09 14:31:35 +02:00
2026-06-09 11:55:23 +02:00
2026-06-09 11:55:23 +02:00
2026-06-09 09:07:47 +02:00

Werkator

Lightweight, declarative and highly opinionated software build system (CI/CD).

Documentation

Adding a Gitea Repository

One instance serves several repositories (docs/deployment.md, ADR 0009). From the workstation, clone and initialise, then register:

tools/remote --env-file .env.<instance> werkator repo-add https://gitea.example.org/<owner>/<repo>.git [<name>]

It prints the registry entry: add it to ~/.werkator.yml under repositories:, then restart the service. The optional [<name>] overrides the directory basename: it becomes the route segment (/repos/<name>/…) and the UI switcher entry, so it must be unique. Needed only when the clone directory name is wrong or collides — e.g. michael.hoennig.de.git checked out as michael.hoennig.de, or two forges serving a repo of the same name. A public repository needs nothing else: the clone runs anonymously. A private repository needs shared credentials once on the host, in ~/.werkator.yml of the service user, before cloning:

defaults:
  git:
    account: <gitea-user>
    token: <token>   # Gitea → Settings → Applications → Generate Token, scope read:repository

Developer Setup

Source .envrc to add tools/ to your PATH, or install direnv to have this done automatically on cd:

source .envrc

Common tasks:

./gradlew build          # compile and run all checks
./gradlew test           # run tests
./gradlew ktlintFormat   # auto-format Kotlin sources
./gradlew ktlintCheck    # check formatting (also runs as part of build)

adr-status               # show all architecture decisions at a glance

direnv

direnv sources .envrc automatically whenever you enter the repository and unloads it when you leave.

# Ubuntu
sudo apt install direnv

# add to ~/.bashrc or ~/.zshrc
eval "$(direnv hook bash)"   # or: eval "$(direnv hook zsh)"

Trust the project's .envrc once per clone:

direnv allow

Tools (tools/)

Command Description
adr-status List all Architecture Decision Records with their status and decision summary

Architecture Decision Records

Major technical decisions are documented as ADRs in docs/adrs/.

adr-status   # show all decisions at a glance

New ADRs follow the template at docs/adrs/0000-00-00.adr-template.md.

S
Description
A simple CI app mostly for GitEA and Hostsharing Managed Webserver/Webspace as well as Hostsharing Container Server (rootless Docker).
Readme MIT
16 MiB
Languages
Kotlin 83.1%
HTML 7%
JavaScript 4.7%
Shell 3.1%
CSS 2.1%