Continuous Integration & Automated Deployment (CI/CD)3 min readUpdated September 2026

Running One CI/CD Standard Across a Dozen Client Codebases

A custom software shop doesn't run one pipeline, it runs a dozen, each living in a different client's repository with different access rules, different deploy targets, and sometimes a different platform the client already picked before you arrived.

The question isn't which tool is objectively better. It's how you keep every project on a consistent standard without rebuilding the same workflow file from scratch each time you onboard a new client.

Vendors Covered in this Article

Disclosure: We may earn a commission if you buy through some links on this page. It doesn't change what we recommend.

Step 1: decide who owns the repository

Before you write a single workflow file, settle whether the client's code will live in your organization or theirs, because that decides which CI platform you're using. If a client already runs GitLab internally and wants the work to land in their group when the engagement ends, building on GitLab CI from the start avoids a painful migration at handoff. If the repository lives in your own GitHub organization for the length of the build, GitHub Actions is the natural default.

Write this decision down in the project's kickoff notes. Nothing wastes more agency engineering time than a mid-project argument about which CI platform a nearly finished project should have used from day one.

Step 2: build one reusable template, not twelve pipelines

GitHub Actions' reusable workflows and GitLab CI's include keyword both let you define a standard pipeline once, in a template repository, and have every client project call it with a few project-specific inputs. That template should cover linting, running tests, and building a deployable artifact, with the deploy step parameterized by environment.

Without this, every new engineer who joins a project copies the last project's YAML file and tweaks it, and six months later no two client pipelines look alike. A shared template is the difference between a setup that takes an afternoon per new engagement and one that takes a day.

Step 3: gate the deploy step behind a real review

Client work carries a specific risk: the person approving a production deploy is often not the person who wrote the code, and clients expect a paper trail showing who signed off. Use required reviewers on a protected environment, GitHub Actions environments or GitLab's protected environments and approval rules, so a deploy to the client's production system needs an explicit approval from a lead, not just a passing test suite.

This also protects you contractually. When a client asks who approved a change that broke something, you want an answer in the pipeline's audit log, not in someone's memory.

Step 4: plan the handoff before the project starts

Client-facing engagements eventually end, and the pipeline has to keep running without you. Document the workflow file, the required secrets, and who at the client needs write access to the CI configuration, and do it at kickoff rather than in the final week. A pipeline that only your team understands isn't a deliverable, it's a liability you're handing the client along with the code.

DevOps spend for a private software company typically runs to a few percent of ARR1. If a client's pipeline still depends on your firm after handoff, that budgeted spend keeps flowing to you instead of becoming a line item they can plan around, which is a conversation worth having openly before the engagement ends.

What to check before quoting a new engagement

When scoping a new project, a few quick checks save you from underquoting the DevOps portion of the work:

  • Does the client already have a CI platform preference, and does it match yours?
  • Will the client need a staging environment with its own approval gate, or just a single production deploy?
  • Who on the client side will own the pipeline after handoff, and do they know YAML?
  • Does the project involve any regulated data that changes how build artifacts need to be retained or logged?

Getting these answers during scoping, not during week six, is what keeps a CI/CD standard from becoming a different improvisation on every engagement.

Training new engineers on the shared standard

A reusable pipeline template only pays off if every engineer who touches a client project actually understands it, rather than treating it as a black box they copy without reading. Walk new hires through the template during onboarding, specifically the parts that differ from a typical solo project: the required-reviewer gate, the artifact promotion step, and how secrets get scoped per client.

An engineer who's only ever worked from the template without understanding it will eventually improvise around it under deadline pressure, usually by skipping the review gate or hardcoding a credential to get a demo working. Catching that in code review, and explaining why the template does things the way it does, is cheaper than fixing the same mistake across three different client projects later.

Executive Capability Standard

What Good Looks Like

Good looks like a shared pipeline template that every client project inherits from, with deploy gates that produce a clear audit trail of who approved what, and documentation a client's own engineers can pick up after handoff.

Building The Capability (5-Stage Skill Ladder)

1. Learn:Have a lead engineer document your current ad hoc pipeline patterns across active projects so you can see where they've already diverged.
2. Do Manually:Build the first version of a shared reusable workflow template by hand, based on your most common project shape, before rolling it out further.
3. Delegate:Assign one engineer as the template owner who reviews any project-specific deviation before it's merged, so drift gets caught early.
4. Automate:Turn the kickoff checklist for CI/CD scoping into a repeatable checklist item in your project intake process so it's never skipped under deadline pressure.
5. Buy:For compliance-heavy clients, a service like Vanta can give both you and the client continuous evidence that branch protection and review requirements stayed in place through the engagement.

How to Get Started

Disclosure: We may earn a commission if you buy through some links on this page. It doesn't change what we recommend.

Frequently Asked Questions

Should we standardize on one CI platform across every client, even when the client prefers the other one?

No, fighting a client's existing tooling costs more goodwill than it's worth. Standardize your internal template logic, linting, test stages, and deploy gating, so the same structure works on either platform, and let the client's repository host decide the platform.

How do we bill for the DevOps time CI/CD setup takes on a new engagement?

Scope it as its own line item during kickoff rather than folding it into feature development estimates. A reusable template shortens this work, but client-specific secrets, environments, and approval rules still take real hours to configure correctly.

What happens to our pipeline templates if a client eventually leaves GitHub for GitLab, or the reverse?

Keep the actual build and test logic in plain shell scripts your pipeline calls, rather than deeply nested platform-specific YAML. That way, moving platforms means rewriting the thin CI wrapper, not the underlying build process.

Sources

Where we quote a benchmark, we show its source. Other figures in this guide are estimates or general guidance, so check them against your own numbers.

  1. DevOps spend as % of ARR (median, private B2B SaaS). SaaS Capital 2026 Spending Benchmarks for Private B2B SaaS Companies (15th annual survey, 1,000+ companies), 2026.

Related Guides