← Back to work

From calendar-event releases to an approval click.

Multi-stage CI/CD pipelines for .NET and MSSQL workloads, built with GitHub Actions and GitLab CI: automated builds, tests, encrypted secrets, and the same repeatable path to dev and production for every single commit.

Context

Cyberoide Tech, client production systems

Stack

GitHub Actions · GitLab CI · Jenkins · Docker · AWS

Year

2024 - 2025

push build test inject secrets deploy dev approve production

The mission

Releases were events, not routine

Deployments of .NET applications were manual and slow: builds happened on developer machines, configuration lived in people's heads, and a production release was something you scheduled and braced for.

I built pipelines that take every commit from push to production automatically: compiled, tested, containerized, and deployed to AWS with an identical process for dev and production.

What I built

The work

Challenges

Problems along the way

"Works on my machine" builds

Local builds produced inconsistent artifacts with untracked dependencies.

Fixed: all builds moved to pipeline runners using pinned toolchains and Docker images, making every artifact reproducible from a commit SHA.

Credentials scattered everywhere

Connection strings and API keys lived in plaintext config files and shell history.

Fixed: centralized encrypted secrets in GitHub and GitLab secret stores, scoped per environment and injected only at runtime.

Production deploys were high-risk

Manual multi-step releases meant long change windows and regular human error.

Fixed: stage-gated pipelines where production reuses the exact artifact already validated in dev, so a release became an approval click.

Outcome

Every

commit built and tested automatically

One

pipeline serving dev and production

Zero

secrets stored in repositories

Minutes

from commit to deploy

← Back to work Next: Modular Terraform platform