in src/pipeline.ts [409:469]
private jobForScriptStep(node: AGraphNode, step: ShellStep): Job {
const envVariables: Record<string, string> = {};
for (const [envName, ref] of Object.entries(step.envFromCfnOutputs)) {
const jobId = this.findStackOfOutput(ref, node);
this.addJobOutput(jobId, {
outputName: ref.outputName,
stepId: 'Deploy',
});
envVariables[envName] = `\${{ needs.${jobId}.outputs.${ref.outputName} }}`;
}
const downloadInputs = new Array<github.JobStep>();
const uploadOutputs = new Array<github.JobStep>();
for (const input of step.inputs) {
downloadInputs.push({
uses: 'actions/download-artifact@v2',
with: {
name: input.fileSet.id,
path: input.directory,
},
});
}
for (const output of step.outputs) {
uploadOutputs.push({
uses: 'actions/upload-artifact@v2.1.1',
with: {
name: output.fileSet.id,
path: output.directory,
},
});
}
const installSteps = step.installCommands.length > 0 ? [{
name: 'Install',
run: step.installCommands.join('\n'),
}] : [];
return {
id: node.uniqueId,
definition: {
name: step.id,
permissions: {
contents: github.JobPermission.READ,
},
runsOn: RUNS_ON,
needs: this.renderDependencies(node),
env: {
...step.env,
...envVariables,
},
steps: [
...downloadInputs,
...installSteps,
{ run: step.commands.join('\n') },
...uploadOutputs,
],
},
};
}