Skip to content

area · DevOps

CI that keeps things from breaking

CI gates that scope lint, typecheck, tests and build to the merge-request diff, rolled out to two repositories on the same day. Before that, the first CI/CD pipeline of a company that deployed by hand.

  • Fails loudly when the change list comes back empty
  • Caches only the package-manager store
  • 100% conventional commits across 659 commits
  • gitlab ci
  • github actions
  • docker

measured impact · before → after

  • CI cache save−97%

    1:36 → 0:03

◆ PipelineRunner

Verify only what changed, and fail if there's nothing to verify

Run the pipeline and compare before and after the merge-request gate I built: lint, typecheck, tests and build scoped to the MR diff, caching only the package-manager store. The times are the measured ones.

Every MR verifies only the files in the diff (git merge-base) and caches only the package-manager store.

  1. lint: pending
  2. typecheck: pending
  3. test: pending178 s
  4. build: pending
  5. deploy: pending
Cache save
0:03
Test suite
178 s

InfraMap

  1. 01

    Company VPN

    Internal servers are reachable only through the VPN, which I run.

  2. 02

    Self-hosted GitLab

    Upgrades, daily backups and rollback runbooks are on me.

  3. 03

    MR gate

    Lint, typecheck, tests and build on the diff; blocking before merge.

  4. 04

    Production on DigitalOcean

    DevOps access across the production environments.

Demo with fictitious data: no real clients and nothing from production.

Cases

  • Merge-request CI gate

    Lint, typecheck, tests and build scoped to the MR diff, made blocking in two repositories on the same day.

  • The company's first CI/CD

    Production deployments were manual and unverified; the pipeline automated build, tests and deploy.

  • Runbooks and self-hosted infrastructure

    I run the self-hosted GitLab (upgrades, daily backups and rollback runbooks) and the company VPN.

  • Upcard · 2026in production

    Merge-request CI gate

    Pipeline author

    GitLab pipeline that scopes lint, typecheck, tests and build to the merge-request diff and fails loudly when the change list comes back empty. Blocking in two repositories.

    cache save
    1:36 → 0:03
    repositories, same day
    2
    • GitLab CI
    • Docker
    • pnpm

Shall we build something reliable?

I reply in English or Spanish.

Email me on Gmail