Why Every Change We Ship Goes Through One Pipeline
There is a moment in every developer's life when production is broken, the fix is one line, and the server is right there. Why not log in and change it?
At Jag Journey the answer is a firm no. Every change to our platform reaches customers through one path: the code is pushed to our source repository, and an automated pipeline builds, migrates, checks and releases it. Nobody deploys by hand. The server is for diagnosis, not for editing.
What the pipeline does
When a change is pushed to the main branch, the pipeline takes over. In broad strokes it:
- Pulls the exact version of the code that was pushed
- Installs the dependencies that version declares
- Builds the front-end assets
- Runs database migrations so the schema matches the code
- Clears and rebuilds caches so no stale configuration lingers
- Runs health and smoke checks to confirm the application responds
- Records the release so it can be identified later
The details evolve, but the principle does not. The same steps run in the same order every time.
Why hand-made changes are dangerous
A change made directly on a server has no record in the source history. The next deploy will overwrite it, and the bug comes back. Worse, nobody else knows it happened, so when something strange occurs a week later, the team investigates code that is not what is actually running.
Hand-made changes also skip every safety net. No review, no migration ordering, no cache refresh, no health check. A one-line fix can take the whole application down if a cached configuration still points at the old value.
One path makes problems traceable
When every change goes through the pipeline, every release corresponds to a specific, reviewable commit. If something goes wrong, we can answer the important questions quickly: what changed, when it changed and who changed it. That traceability is worth far more than the minutes saved by a manual fix.
It also means the fix for an emergency is the same as the fix for anything else. Write the change, push it, let the pipeline release it. Because the pipeline is fast and familiar, there is no reason to bypass it.
Database changes travel with the code
One of the quiet strengths of a single pipeline is that database changes ship together with the code that needs them. A new column, a new table or a one-time data fix is written as a migration and committed alongside the feature. The pipeline runs migrations as part of every release, in order, so the database and the application never disagree about what exists.
That also gives us a clean way to deliver content and configuration. When we publish a new set of pages or settings for a customer site, we write it as a guarded, one-time migration that checks its assumptions first and leaves later edits alone. The release that ships the code also ships the data, and the history shows exactly when both arrived. Our post on one-time seeders that respect later edits goes deeper.
Fast runs and full runs
Not every change needs every check. A typo fix in a help article does not need the full test suite. For that reason our pipeline lets the person pushing choose between a faster run, which keeps all the build, migration, health and release gates but skips the long test suite, and a full run that includes it. Merge requests always get the full checks. You can read more in choosing fast or full pipeline runs.
Looking at production without touching it
Sometimes we do need to look at a live server: to read a log, check a configuration value or confirm what a database contains. Those visits are read-only. We look, we learn, and then we fix through the pipeline. Our article on read-only production diagnostics explains how we keep that line clear.
What customers gain
Customers never see the pipeline, but they feel its effects. Releases are predictable. Fixes stick. When something does go wrong, it is found and corrected quickly because the history is clear. That reliability is part of what we promise across everything on our Technology & Impact page.
Frequently asked questions
Is it ever acceptable to change code directly on a production server?
Not for our platform. Even urgent fixes go through the pipeline so they are recorded, reviewed and not overwritten by the next release.
What is a deployment pipeline?
A deployment pipeline is an automated sequence of steps that takes code from a repository, builds it, checks it and releases it to servers the same way every time.
Does a pipeline make emergency fixes slower?
Slightly, compared with a hand edit, but the difference is usually minutes. In exchange, the fix is recorded, checked and permanent.
Comments (0)
No comments yet. Be the first to share your thoughts!