[英]AWS CodePipeline CDK TypeScript
当 AWS CDK 代码 (TypeScript) 发生更改并被推送到存储库时,AWS CodePipeline 构建步骤中的install commands
不会更新。 项目Build details下的Buildspec部分与创建时的配置相同。
有办法解决吗? 我们对 BuildStep CDK 进行了一些更改,但不会对 AWS CodeBuild 配置详细信息生效。 我只是 AWS CodeBuild 和 CodePipeline 的新手。 任何答案/建议都会有很大的帮助。
示例代码
const pipeline = new CodePipeline(this, 'SamplePipeline', {
pipelineName: 'SamplePipeline',
synth: new CodeBuildStep('BuildSynthStep', {
input: source,
buildEnvironment: {
buildImage: codebuild.LinuxBuildImage.STANDARD_5_0
},
installCommands: [
'install_command_1',
'install_command_2',
...
'install_command_n'
],
commands: [
'command_2',
...
'command_n'
],
}
)
});
工件提供者:Amazon S3
CDK Pipeline 的自突变仅在您在应用程序阶段(准确地说是 CDK 阶段)或合成代码构建作业后的其他阶段更改某些内容时应用。
如果您之前运行过一些东西,例如单元测试,那么您将无法进入自我更新作业。
那么,你现在有什么选择?
好吧,根据管道本身进行的更改大多是手动完成的。 因此,您必须在本地计算机上重新运行cdk deploy PipelineStack
,并将您的更改提交到源分支。
您可以通过 3 个步骤完成类似的操作。 (由于 CDK 在运行时读取此文件,CDK 也会获取任何更新):-
创建构建规范文件。
创建代码构建构造函数
使用该构造函数并将构建规范文件传递给BuildSpec.fromObject方法。
在项目的根目录下创建一个 buildspec 目录,并为此示例创建一个您选择的任何文件plan-build
spec.yml
version: 0.2
env:
variables:
phases:
install:
commands:
- echo "hello"
pre_build:
commands:
- printenv
build:
commands:
- echo 'in build stage'
这将是您的代码构建项目的构造函数
this.project = new codebuild.PipelineProject(this, 'codebuild-project', {
projectName: props.projectName,
description: props.description, // a Bucket used as a source in CodePipeline must be versioned
environment: {
computeType: ComputeType.SMALL,
buildImage: LinuxBuildImage.AMAZON_LINUX_2_4
},
buildSpec: props.buildspec,
});
}
这将是您将在另一个文件中使用该构造函数的代码。
import { codeBuildProject } from '../lib/constructs/pipeline-codebuild-project'
const TfPlan = new codeBuildProject(this, 'project', {
projectName: 'some name',
description: 'project description',
buildspec: codebuild.BuildSpec.fromObject(yaml.parse(fs.readFileSync('buildspec/plan-buildspec.yml', 'utf8'))),
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.