Upkeep is a maintenance orchestrator CLI for contributed Drupal modules. It tracks every module you maintain across the core versions you support, shows every open contribution with its CI and local-check state, runs each one through a fully isolated check flow, and offers a human-approved fast-lane merge for the ones that pass every gate.
New here? Install, then set up a
cockpit, then build base artifacts for
a core version. After that, upkeep issues <module> works on any Drupal
module — registered or not.
- Install — requirements, installing from a clone, shell completion
- GitLab token — what needs a credential and what does not
- Set up a cockpit — the registry, and what a cockpit holds
- Base artifacts — the per-core building blocks, pre-release majors, rebuilding
- Publishing: issue forks and SSH — how work reaches drupal.org
- The dashboard — everything open, and what a row represents
- Work on an issue —
issues→start→publish - Patch contributions — the work a merge-request view cannot see
- Running checks — the isolated flow, and how it matches drupal.org CI
- Review, merge and release notes
- Working in an environment — a shell, a path, a running site
- Fixtures — check against real database state
- Command reference — every command, generated from the CLI itself
- Exit codes — the 0/1/2 contract
- Disk housekeeping — where the space goes, and reclaiming it
- Upgrading a cockpit
Why upkeep is shaped the way it is, rather than how to use it.
- Design document — the problem, the adapter boundary, cold starts, the fast lane and the DA policy behind it
- The dashboard row model — why a row is
(module, issue, branch)and core is evidence, not identity - Any module, not just yours — the registry as a watchlist rather than a gate
- Base artifacts — lifecycle, staged rebuilds, pre-release core majors