I once pushed to the wrong branch on a client project. Not the staging branch, the live one. The fix took about four minutes but the conversation that followed took longer. That was the last time I deployed anything manually.
GitLab CI/CD is what I moved to, and it's been solid. You write one config file, commit it, and from that point on every push triggers a pipeline that tests your code, builds it, and ships it. No dragging folders, no SSH sessions, no hoping you remembered the right build command.
This article walks through setting up a full pipeline for a React app. We'll go from a blank project to something that deploys automatically to GitLab Pages whenever you push to main. I'll also flag the things that caught me off guard the first time, because the documentation doesn't always surface those.
CI/CD in Plain Terms
Continuous Integration means your tests run automatically on every push. You get a pass or fail before anyone merges anything.…