Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposal for introducing wave concept to pipeline targets. #290

Closed
StewartW opened this issue Sep 26, 2020 · 1 comment
Closed

Proposal for introducing wave concept to pipeline targets. #290

StewartW opened this issue Sep 26, 2020 · 1 comment
Milestone

Comments

@StewartW
Copy link
Contributor

What and Why

This is partly inspired by: https://aws.amazon.com/builders-library/automating-safe-hands-off-deployments
But also working towards a solution to Issue #250

The proposal is that we add the concept of a "Wave" to each stage. In the default ADF pipeline, this would be Stage actions that have the same run order, and so happen in parallel.

Each "Wave" would happen in sequential order. allowing for some more control over what a deployment looks like.

Whilst it doesn't solve #250 straight away (The sequential / parallel limit is still 50 actions per stage) combining this with #285 would allow for the creation of some new pipeline types that could leverage integrations with CodePipeline.

How?

I'm proposing that we add a new property to the target schema definition for max_wave_size this would default if not set to the current parallel action of 50. (This ensures that there's no backwards compatibility issues and that existing pipelines aren't changed unintentionally)

This max wave size would then be set on the TargetStructure class and exposed as a property wave_size

Inside generate_pipelines_input, we would batch up the target_structure.account_list based on the wave size and set this into the pipeline template dictionary.

Inside the cdk_stack for generating the pipeline we would continue to process targets as normal however with one exception. Instead of targets being a list of targets. It will become a list of a list of targets. [[12345678910],[12345678911]] rather than the current [12345678910. 12345678911]

The same assumptions can be made that any properties defined for the first target in a wave also applies to the rest of the wave.

TL;DR

A significant change to how we format pipeline targets from the deployment map definition, that will not impact the current default pipeline, but will allow for more customisable custom pipeline types going forward.

@sbkok sbkok added this to the v3.2.0 milestone Sep 26, 2022
@sbkok
Copy link
Collaborator

sbkok commented Jan 24, 2023

Thank you for your patience. I am happy to inform you that this feature has been released as part of v3.2.0 just now.
I'm hereby closing this issue. Please open a new issue if you are experiencing any issues related to this feature.

@sbkok sbkok closed this as completed Jan 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants