in src/pipeline.ts [285:332]
private jobForDeploy(node: AGraphNode, stack: StackDeployment, _captureOutputs: boolean): Job {
const region = stack.region;
const account = stack.account;
if (!region || !account) {
throw new Error('"account" and "region" are required');
}
if (!stack.templateUrl) {
throw new Error(`unable to determine template URL for stack ${stack.stackArtifactId}`);
}
const resolve = (s: string): string => {
return EnvironmentPlaceholders.replace(s, {
accountId: account,
region: region,
partition: 'aws',
});
};
const params: Record<string, any> = {
'name': stack.stackName,
'template': resolve(stack.templateUrl),
'no-fail-on-empty-changeset': '1',
};
if (stack.executionRoleArn) {
params['role-arn'] = resolve(stack.executionRoleArn);
}
const assumeRoleArn = stack.assumeRoleArn ? resolve(stack.assumeRoleArn) : undefined;
return {
id: node.uniqueId,
definition: {
name: `Deploy ${stack.stackArtifactId}`,
permissions: { contents: github.JobPermission.NONE },
needs: this.renderDependencies(node),
runsOn: RUNS_ON,
steps: [
...this.stepsToConfigureAws({ region, assumeRoleArn }),
{
id: 'Deploy',
uses: 'aws-actions/aws-cloudformation-github-deploy@v1',
with: params,
},
],
},
};
}