hybrid-nodes-cdk/lib/nodeadm/e2e.ts (67 lines of code) (raw):
import * as codepipeline from 'aws-cdk-lib/aws-codepipeline';
import * as codepipeline_actions from 'aws-cdk-lib/aws-codepipeline-actions';
import * as cdk from 'aws-cdk-lib';
import * as codebuild from 'aws-cdk-lib/aws-codebuild';
export function createTestAction(
kubeVersion: string,
cni: string,
buildOutput: codepipeline.Artifact,
integrationTestProject: codebuild.PipelineProject,
additionalEnvironmentVariables: { [name: string]: codebuild.BuildEnvironmentVariable } = {},
): codepipeline_actions.CodeBuildAction {
return new codepipeline_actions.CodeBuildAction({
actionName: `kube-${kubeVersion.replace('.', '-')}-${cni}`,
input: buildOutput,
project: integrationTestProject,
environmentVariables: {
KUBERNETES_VERSION: {
value: kubeVersion,
},
CNI: {
value: 'cilium',
},
SKIP_IRA_TEST: {
value: 'false',
},
...additionalEnvironmentVariables,
},
});
}
export function createNodeadmE2EPipeline(
stack: cdk.Stack,
nameSuffix: string,
sourceAction: codepipeline_actions.GitHubSourceAction,
buildAction: codepipeline_actions.CodeBuildAction,
cleanupAction: codepipeline_actions.CodeBuildAction,
ecrCacheAction: codepipeline_actions.CodeBuildAction,
testsActions: Array<codepipeline_actions.CodeBuildAction>,
variables: Array<codepipeline.Variable> = [],
additionalStages: Array<codepipeline.StageProps> = [],
) {
const pipelineName = `nodeadm-${nameSuffix}`;
return new codepipeline.Pipeline(stack, `${pipelineName}-pipeline`, {
pipelineName: pipelineName,
pipelineType: codepipeline.PipelineType.V2,
restartExecutionOnUpdate: false,
variables: variables,
stages: [
{
stageName: 'Source',
actions: [sourceAction],
},
{
stageName: 'Build',
actions: [buildAction],
},
{
stageName: 'CleanupAndCache',
actions: [cleanupAction, ecrCacheAction],
},
{
stageName: 'E2E-Tests',
actions: [...testsActions],
},
...additionalStages,
],
});
}