Work · MAISTREAM and ITTAS
Releases: 30 minutes → 6
A Java application was built and deployed by hand. I moved it to CI/CD, and front-end apps and landing pages started deploying on push — with no engineer involved.
Before
A Java application was built by hand in Apache NetBeans on Windows, and the WAR file was copied to Payara Server manually. A release took about 30 minutes, and every time something could go wrong: the wrong version, the wrong file, a forgotten step.
What I did
- CI/CD on GitHub Actions with automatic WAR deployment to Payara: build, check and deploy by one scenario, the same way every time.
- Containers. I wrote Dockerfiles for the company’s services and set up image publishing to a private DigitalOcean Container Registry.
- Layers in docker-compose. Infrastructure services (Redis, Vault) run in a separate stack, the backend in its own. An application release no longer restarts stateful components.
- Front-end on push. 15 front-end apps and more than 100 landing pages deploy themselves through Cloudflare Pages.
- Routing for 300+ domains with Caddy: adding a new service no longer means editing configs by hand.
Earlier, at ITTAS, I built GitLab CI pipelines for 10 Node.js applications — from commit to deploy with no manual steps — and maintained the GitLab Runners.
The result
A release takes 6 minutes instead of 30, manual build errors are gone, and the team deploys front-end apps and landing pages by itself.
What I learned
Automate the most painful thing first, and start with one scenario that works every time. A good pipeline is also documentation: it shows how the application really gets to production.