Goa’s shacks repaint in April, dive schools service their compressors in May, and every serious booking platform runs its own version of the same ritual before the season opens. The delivery setup deserves the ritual too. What follows is a twelve-point GitLabOps inspection — the Ops Atlas’s plain name for operating software delivery on GitLab — arranged by the four loops the Atlas uses, each check carrying one pass condition. No philosophy, no vendor pitch: run it, tick it, fix what fails.
Configuration Checks Before the GitLabOps Season
1. One trigger map. Every pipeline in the organisation traces to a written workflow rule, and no two rules can produce the same build. Pass condition: pushing the same commit twice cannot create two running pipelines. This single rule quietly halves most teams’ compute bill.
2. Explicit dependencies. Every job declares what it truly waits for, rather than inheriting a stage order nobody remembers choosing. Pass condition: a fast job never queues behind an unrelated slow one. Draw the graph once with the team and arguments about ordering end for the year.
3. Pinned components. Shared templates and included files are locked to tested versions. Pass condition: an upgrade upstream cannot change your builds until you move the pin. Silent drift is the enemy; a pin is its affordable defeat.
4. Cancellation on supersede. Outdated runs terminate when a newer commit lands. Pass condition: abandoning a branch and pushing again does not leave both versions racing. Wasted minutes in March become wasted hours in December.
Scheduling and Delivery Checks for the Rush
5. Tags that mean clearance. Runner tags describe what machines are trusted and equipped to do, and jobs request the minimum. Pass condition: you can name, from the tags alone, which machines may touch untrusted code. If that answer requires opening a spreadsheet, the tags have failed their one job.
6. Disposable workers for outside code. Anything building third-party contributions runs on machines retired after one assignment. Pass condition: no persistent host ever executes an external merge request. Machines that forget everything after each job cannot leak yesterday’s secrets tomorrow.
7. Capacity measured, not felt. Queue time at the 95th percentile sits inside the two-minute mark through a deliberately busy afternoon. Pass condition: peak-hour jobs start before a reviewer finishes reading the diff. Measure on a deliberately busy afternoon, not a quiet Tuesday that proves nothing.
8. Production fenced on all sides. Protected environment, one deployment at a time per resource group, outdated deploy jobs barred, production image tag restricted to maintainers. Pass condition: a fresh hire holding the repository URL still cannot ship without an approved role. Test it with a real account, not in your head.
9. No long-lived secrets anywhere. Deploys authenticate with short-lived identity tokens the provider verifies, and the job-token allowlist names exactly who may call in. Pass condition: a full-text search of the settings finds no static cloud key. Include the variables fields people forgot the project inherited.
Platform Checks Nobody Should Skip in April
10. Version inside the window. A self-managed install sits no more than two minor releases behind, with every compulsory stop on the upgrade path honoured and background migrations given space to complete. Pass condition: the upgrade calendar shows its next three entries booked, in writing, with an owner against each. Hope is not a maintenance strategy.
11. Backups that have met a restore. Configuration, registries and databases have survived at least one rehearsal restore this quarter. Pass condition: a named person has personally restored something recently and can say, in one sentence, what surprised them. Untested backups are Schrödinger’s safety net.
12. Numbers on one page. Review turnaround, queue time, success rate, fleet load and cost per successful pipeline sit on a single sheet anyone can read. Pass condition: a teammate can state all five without opening three dashboards. If the sheet needs explaining, the sheet is wrong.
Sign the GitLabOps Checklist Like a Professional
Run the inspection itself in one sitting, in this order, and it will not eat a working day:
- Block one afternoon before rates rise and calendars fill; bring the person who owns the servers.
- Walk points 1 through 4 against the live pipeline settings, screenshots allowed, memory discouraged.
- Walk 5 through 7 during a busy window so the queue numbers mean something.
- Walk 8 through 12 with the person who can actually change settings, not merely admire them.
- File the sheet with dated exceptions and owners; an unticked box without a name is a wish, not a plan.
A checklist earns its keep only if failure actually stops the line. The rule we recommend: any red item on points 8, 9, or 10 postpones the next release until it is green — those three guard other people’s data and your own uptime. Items 1 through 7 can ride with a dated exception and an owner. That discipline, more than any tool, is what separates teams that enjoy their high season from teams that spend it apologising; the same evidence-first mindset runs through this piece on cloud automation patterns for reliable delivery. For the reference definitions behind every check above — trust tiers, upgrade stops, the metrics and their honest footnotes — the GitLabOps entry in the Ops Atlas is where every definition above is written down. Engineers building the skills to run such an inspection will find a constructive project list in this guide to portfolio projects for DevOps roles, and teams evaluating supporting tools should apply the same pass-condition rigour described in this guide to researching digital tools before anything new enters the stack. Print the twelve points, tape them above the desk, and let the season find you bored. Bored, in operations, is the trophy.