sadqwes Русский
← All cases

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.

ResultRelease time from 30 to 6 minutes, no more manual build errors
GitHub ActionsGitLab CIDockerCloudflare PagesCaddyPayara

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.

← All cases