DOP-C02 Practice Question 11: CDK Pipeline Self Mutation
AWS Certified DevOps Engineer – Professional (DOP-C02) · Test 2 · question 1 of 10
A team defines its delivery pipeline with the AWS CDK v2 pipelines.CodePipeline construct. A year ago, while iterating on the pipeline, an engineer set selfMutation: false and deployed it with cdk deploy. Today a developer adds a Prod application stage with addStage(), pushes to the source branch, and watches the pipeline run: the synth step succeeds, but no Prod stage ever appears in the pipeline. The Prod account was already bootstrapped with --trust for the pipeline account. The team wants future pipeline changes to arrive through git push alone; one final manual deployment to fix the situation is acceptable.
What should the team do?
Show answer and explanation
Answer:
CDK Pipelines are self-updating: with selfMutation at its default of true, the generated pipeline includes a self-mutation (UpdatePipeline / SelfMutate) step that runs after synth and redeploys the pipeline stack from the new cloud assembly. That is how an added stage or asset shows up without anyone running cdk deploy. The API reference says the property "needs to be set to true to allow the pipeline to reconfigure itself when assets or stages are being added", and that false is for temporary use while you iterate and deploy with cdk deploy. With it set to false, the synth step produces a cloud assembly that includes Prod, but nothing deploys that assembly onto the pipeline itself. That matches the symptom exactly. Turning self-mutation back on is itself a change to the pipeline, and the current pipeline cannot apply it, so one manual cdk deploy is needed. After that, the pipeline keeps itself up to date from the repository.
Option A fixes a problem the team doesn't have. The stem says Prod was already bootstrapped with --trust. A missing trust relationship would also show up as a failed deploy action in a Prod stage that exists, not as a stage that never appears.
Option C deploys the application but does not fix the pipeline. Prod still never appears as a stage, and every later structural change (a new stage, a new wave, an approval step) would stay invisible in the same way. Deploying application stacks from a synth-time step also bypasses the pipeline's own stage ordering.
Option D only starts a new execution of the existing pipeline definition. Releasing a change does not update the pipeline's structure. Only the self-mutation step, or a manual cdk deploy, does that, and self-mutation is off.
References: Continuous integration and delivery (CI/CD) using CDK Pipelines; class CodePipeline (construct)