in src/lambda_codebase/initial_commit/bootstrap_repository/adf-build/shared/cdk/cdk_stacks/adf_default_pipeline.py [0:0]
def generate_targets_for_pipeline(_stages, scope, stack_input):
for index, targets in enumerate(
stack_input["input"].get("environments", {}).get("targets", [])
):
top_level_deployment_type = (
stack_input["input"]
.get("default_providers", {})
.get("deploy", {})
.get("provider", "")
or "cloudformation"
)
top_level_action = (
stack_input["input"]
.get("default_providers", {})
.get("deploy", {})
.get("properties", {})
.get("action", "")
)
for wave_index, wave in enumerate(targets):
_actions = []
_is_approval = (
wave[0].get("name", "").startswith("approval")
or wave[0].get("provider", "") == "approval"
)
_action_type_name = "approval" if _is_approval else "deployment"
_stage_name = (
# 0th Index since step names are for entire stages not
# per target.
f"{wave[0].get('step_name')}-{wave_index}"
if wave[0].get("step_name") else f"{_action_type_name}-stage-{index + 1}-wave-{wave_index}"
)
for target in wave:
target_stage_override = target.get("provider") or top_level_deployment_type
if target.get("name") == "approval" or target.get("provider", "") == "approval":
_actions.extend(
[
adf_codepipeline.Action(
name=f"wave-{wave_index}-{target.get('name')}".format(target["name"]),
provider="Manual",
category="Approval",
target=target,
run_order=1,
map_params=stack_input["input"],
action_name=f"{target.get('name')}",
).config
]
)
continue
if "codebuild" in target_stage_override:
_actions.extend(
[
adf_codebuild.CodeBuild(
scope,
# Use the name of the pipeline for CodeBuild
# instead of the target name as it will always
# operate from the deployment account.
f"{stack_input['input']['name']}-target-{index + 1}-wave-{wave_index}",
stack_input["ssm_params"][ADF_DEPLOYMENT_REGION]["modules"],
stack_input["ssm_params"][ADF_DEPLOYMENT_REGION]["kms"],
stack_input["input"],
target,
).deploy
]
)
continue
regions = target.get("regions", [])
generate_deployment_action_per_region(
_actions,
regions,
stack_input,
target,
target_stage_override,
top_level_action,
)
_stages.append(
_codepipeline.CfnPipeline.StageDeclarationProperty(
name=_stage_name,
actions=_actions,
)
)