You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS CDK Pipeline如何在Synth动作前添加独立自定义执行步骤

CDK Pipeline Synth前添加自定义构建测试步骤方案

可以实现,你可以将Maven构建、测试逻辑拆分为独立的前置步骤,将产物传递给后续Synth步骤即可,具体改造方式如下:

核心改造逻辑

  • 拆分原Synth步骤中的mvn相关逻辑到独立的ShellStep中,在该步骤中完成打包、单元测试、结果上报
  • 将该前置步骤的输出作为Synth步骤的输入,保证mvn package产物在Synth执行时已经可用
  • CodePipeline会自动按依赖关系编排顺序,前置步骤会在Synth步骤之前执行

改造后示例代码

// 先定义源码源
const source = CodePipelineSource.gitHub('OWNER/repo', 'main', {
    authentication: SecretValue.secretsManager('GITHUB_TOKEN'),
});

// 新增独立的构建测试步骤
const buildTestStep = new ShellStep('BuildAndTest', {
    input: source,
    commands: [
        './mvnw package',
        // 可扩展添加单元测试、静态代码扫描等命令
        './mvnw test'
    ],
    // 输出全量文件给后续Synth步骤,也可按需仅指定需要的目录
    primaryOutputDirectory: '.',
    // 配置上报单元测试结果,可在CodePipeline控制台直接查看
    reports: {
        junitTestReport: {
            files: ['target/surefire-reports/*.xml']
        }
    },
    // 如果Maven构建需要用到Docker,可开启该配置
    // dockerEnabled: true
});

const pipeline = new CodePipeline(this, 'Pipeline', {
    dockerEnabledForSynth: true,
    dockerEnabledForSelfMutation: true,
    crossAccountKeys: true,
    synth: new ShellStep('Synth', {
        // 输入改为前置构建步骤的输出,已经包含mvn打包后的产物
        input: buildTestStep,
        commands: [
            // 移除原有的mvn命令,已在前置步骤完成
            'npm ci',
            'npm run build',
            'npx cdk synth',
        ]
    })
});

// DockerImageAsset配置无需修改,路径和之前保持一致即可
const dockerImage = new DockerImageAsset(this, 'Image', {
    directory: '......'
});

注意事项

  • 你可以调整primaryOutputDirectory仅输出需要的目录(比如target目录、CDK代码目录),减少文件传输体积
  • 测试报告除JUnit格式外,还支持Cucumber、Visual Studio Test等格式,可按你实际使用的测试工具调整配置
  • 该方案不会影响原有Docker镜像构建、跨环境部署的逻辑

内容的提问来源于stack exchange,提问作者tobi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:27:03