awslabs / awslabs/aws-deployment-framework
Proposal for decentralised deployment maps and self-mutating pipelines.
- Dominant language
- Python
- Stars
- 699
- Forks
- 235
- Avg merge
- 20h 53m
- Merged PRs (30d)
- 7
Description
### What and Why
Currently if creating a new pipeline or repository we have to create a deployment map in the pipelines repository.
This is a fine approach at the moment. However it does create a disconnect between the deployable application (CFn, CDK, Terraform etc) and the targets.
I'd like to propose that we expand the ADF to support deployment_map.yml files that are in the source of the code being deployed.
### How?
To start with, we would continue to use the existing pipelines pipeline to generate ADF pipelines, it's primary source would still be from CodeCommit as per the current setup.
However we add in a new configuration property to the adfconfig. (Maybe additional_deployment_map_sources). These would then be added in as CodePipeline Secondary Sources to the pipelines pipeline.
Then when a project is pushed to, it would be responsible for pushing it's own deployment map to the configured location.
Pipeline generation then runs as intended, pulling the existing maps from the additional_deployment_map_sources.
This would also tie in to another proposal of self mutating pipelines. Where the pipelines themself would be responsible for updating their targets based on the deployment map. (Very similar to how CDK pipelines works)
### TL;DR
Allow for deployment_maps from different sources (S3 to start with)
This then enabled a new pipeline type (or new build provider/default functionality) that enables mutating pipelines.
### Images
High level comparison of existing flow (left) and additional flow (right)

High Level idea for self-mutating pipeline

As always. Feedback, criticism and ideas are welcome.
Contributor guide
Research direction
Start by reviewing the existing adfconfig and pipelines pipeline flow described in the issue, along with how deployment_map.yml sources are currently handled. Clarify the scope and design for additional S3 sources and self-mutating pipelines before implementation; done would require an agreed configuration, pipeline behavior, and validation plan.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- aws, terraform
- Domain
- cloud, devops
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100