Continuous integration and continuous deployment
CI (continuous integration) is the practice of having every developer commit automatically trigger a build and a test suite. The point is to catch conflicts and bugs as early as possible, before the branch is merged into the mainline.
CD stands for two different things:
– Continuous delivery — the code has passed CI and is ready to ship; the release itself is manual
– Continuous deployment — the release happens automatically once CI passes
For most e-commerce teams the right shape is automatic deployment to staging plus a manual approval for production.
A typical CI/CD pipeline
Commit → Lint & tests → Build → Deploy to staging → Manual review → Deploy to prod
When a personalization platform is in the picture, three more steps earn their place:
- Schema validation — check the JSON schema of the events (view, cart, purchase)
- Smoke test — send a test event into the staging environment
- Tag verification — confirm the JS snippet loads and initialises
CI/CD and personalization platform integrations
Without CI, a broken event schema surfaces days later — when the personalization platform starts complaining about missing key fields or wrong data types. By then a significant slice of the training data for the algorithms has already been lost.
Important: make event tracking part of the CI suite. A test asserting that “the purchase event contains order_id, revenue and items” takes five minutes to write and saves hours of debugging.
| Test | What it checks |
|---|---|
| Schema validation | Every event matches the expected schema |
| Event delivery | Events actually reach the platform’s staging environment |
| Widget load | The JS widget initialises with no console errors |
| A/B split | Visitors are allocated to groups correctly |
Feature flags alongside CI/CD
A feature flag lets you deploy new functionality to production in the off position and switch it on at the moment you choose, with no further release. In e-commerce that is standard practice for:
- The gradual rollout of a new recommendation widget
- Starting an A/B test without a production deploy
- Turning a broken feature off quickly, without rolling back the whole release