我有一个旧的CDK模块,我想用AWS代码管道构建一个新模块。到目前为止,我一直在跟踪这个工作坊,最后得到了一个工作代码管道,该管道从CodeCommit获取源代码、构建项目并更新管道。我希望在管道中的下一个阶段是构建旧的CDK模块,在这里找到使用CDK 2的示例是很困难的。
这些是我正在处理的文件:
cdk-codepipeline
#!/usr/bin/env node
import 'source-map-support/register'
import * as cdk from 'aws-cdk-lib'
import { PipelineStack } from '../lib/pipeline-stack'
const app = new cdk.App();
new PipelineStack(app, 'PipelineStack');pipeline-stack.ts
import { Stack, StackProps } from 'aws-cdk-lib'
import { Construct } from 'constructs'
import {IRepository, Repository} from "aws-cdk-lib/aws-codecommit";
import {CodeBuildStep, CodePipeline, CodePipelineSource} from "aws-cdk-lib/pipelines";
import {exec} from "child_process";
import {BuildArtifactsStage} from "./stages/build-artifacts-stage";
export class PipelineStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
const self = this
const branchName: string = 'my-branch-name'
const repository: IRepository = Repository.fromRepositoryName(self, 'SourceCode','my-repo-name')
const pipeline = new CodePipeline(self, 'Pipeline', {
pipelineName: `my-repo-name-${branchName}`,
crossAccountKeys: false,
selfMutation: true,
synth: new CodeBuildStep('Synth', {
input: CodePipelineSource.codeCommit(repository, branchName),
installCommands: ['npm install -g aws-cdk'],
commands: ['cd cdk-codepipeline','npm ci', 'npm run build', 'npx cdk synth', 'cd ..'],
primaryOutputDirectory: 'cdk-codepipeline/cdk.out',
}),
})
const buildArtifactsStage = pipeline.addStage(new BuildArtifactsStage(self, 'BuildArtifacts'))
}
}build-artifacts-stage.ts
import {Stage, StageProps} from "aws-cdk-lib"
import {Construct} from "constructs"
import {BuildArtifactsStack} from "./build-artifacts-stack";
export class BuildArtifactsStage extends Stage {
constructor(scope: Construct, id: string, props?: StageProps) {
super(scope, id, props);
const buildArtifactsStack = new BuildArtifactsStack(this, 'BuildArtifactsStack')
}
}下面的commands:是我希望在代码管道的第四阶段执行的逻辑。build-artifacts-stack.ts
import {Stack, StackProps} from "aws-cdk-lib";
import {Construct} from "constructs";
import {CodeBuildStep} from "aws-cdk-lib/pipelines";
export class BuildArtifactsStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
new CodeBuildStep('BuildOldCdkModule', {
commands: ['cd ../old-cdk-module', 'npm ci', 'npm run build'],
})
}
}发布于 2022-03-31 16:59:33
我们正在探索非常相似的用例。我不是cdk专家,但希望这是有用的。
研讨会中的示例似乎只有一个从直接部署应用程序(旧版本)到部署部署应用程序的管道(相同的cdk应用程序,只是新版本)的cdk项目:
接下来,由于管道的目的是部署应用程序堆栈,所以我们不再希望主CDK应用程序部署原始应用程序。相反,我们可以更改入口点以部署我们的管道,而管道将反过来部署应用程序。为此,请在bin/cdk-workshop.ts . To中编辑代码
我偶然发现了下面的例子,它似乎更符合您正在做的事情,因为它有一个单独的cdk应用程序中的codepipeline。希望它能给你一些指点。但是,请注意,示例是cdk1:
https://medium.com/andy-le/building-a-dynamic-aws-pipeline-with-cdk-5d5426fc0493
https://stackoverflow.com/questions/71649898
复制相似问题