Skip to content

Versioning and Deployments

Version control

The recipes contained within any kitchen are subject to version control. Recipe contents (code, configuration, and resource files) are versioned via Git, which is accomplished by underpinning each kitchen with its own unique Git branch.

Version control records the intellectual property represented by recipes in a central location, avoiding haphazard, distributed storage of pipeline code or a fragile configuration prone to downtime and quality issues. With Automation, users can review the change histories for a kitchen.

Version control also supports cross-team collaboration by helping to resolve file merge conflicts. All users are encouraged to follow version control best practices, even users unfamiliar with version control methodologies.

Portable data

The kitchen user list and toolchain connections are stored outside of a kitchen's underlying version control branch, while recipe content is controlled within a kitchen's branch. As a result, recipes can be merged across kitchens without impacting user access to the source and target kitchens involved with a merge or deployment.

Given this design, recipes are portable across kitchens, teams, infrastructure connections, and release environments.

Deployments

Recipe content can be merged across kitchens by merging the underlying version control branches. Merges upwards in the kitchen hierarchy and merges to kitchens in different release environments are known as deployments.

Deployment security

Users can merge recipes from a source to target kitchen either through the UI or CLI.

All merges, including deployments to different release environments, are blocked if the user executing the merge does not have access to the target kitchen.

Note

Protected merges can be available in the opposite direction. If users do not have access to a source kitchen but do have access to a target kitchen, they can execute merges.

For example, a user may have no rights or access to a kitchen pointed at a Production Release Environment, so they cannot deploy from a kitchen pointed at a Development Release Environment to the Production-associated kitchen. Still, they can merge changes downward from Production to their Development-associated kitchen when needed.