CI/CD (Continuous Integration and Continuous Delivery) pipelines are the core of our development and deployment process. Pipelines automate the build, testing, and deployment of our applications and services.
We use GitHub as our primary version control system. GitHub provides a centralized platform for versioning control, enabling cross-collaboration, code reviews, and tracking changes across teams and projects.
Our preference is for smaller and more frequent changes. This approach promotes agility and makes us iterate fast, shortening the feedback loop. Breaking down tasks into smaller components helps us track progress, review code changes, and identify bugs earlier on.
Our build process starts by pushing changes to a repository on GitHub. When code is pushed to a repository through a pull request, it triggers a job to build the changes made to the branch and deploy them in isolation. This workflow happens interactively within the pull request, where the author has visibility of all steps.
Some tools we use offer preview URL deployments that contain the latest changes for each PR. Every new commit in the branch triggers a new build, and this isolated environment always contains the latest changes.
This practice enables the engineers to preview and validate the changes before anything is pushed to production.
After the PR review, a squash merge is performed into the main
branch. Once we are ready to trigger a release, the main
branch is rebased into production
, triggering the pipelines to deploy the latest updates.