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

如何为AWS CDK CodePipeline添加网站仓库触发源并实现差异化构建部署

实现多源触发+差异化构建的配置方法

你要的需求完全可以在现有CDK Pipeline的基础上修改实现,这部分逻辑确实属于CodePipeline的源阶段和构建阶段的范畴,不需要调整现有流水线的核心结构。

第一步:新增网站仓库为额外触发源

你需要在synth步骤的additionalInputs参数中添加app-website的源,指定独立的检出路径,保证两个仓库的代码在构建环境中互不干扰,默认配置下两个仓库任意一个有推送都会触发流水线。

第二步:调整构建命令适配双仓库构建

在synth步骤的命令序列中分别执行CDK仓库、网站仓库的构建逻辑,将网站构建产物输出到CDK可访问的资产目录,后续由CDK自动管理资产的上传和部署。

修改后的完整Pipeline配置示例如下:

// 预先定义两个代码源
const cdkSource = CodePipelineSource.gitHub(`${ORG_NAME}/app-cdk`, BRANCH_NAME, {
  // 保留你原有配置的GitHub认证参数即可
});
const websiteSource = CodePipelineSource.gitHub(`${ORG_NAME}/app-website`, BRANCH_NAME, {
  // 认证配置和CDK源保持一致
});

const pipeline = new CodePipeline(this, 'MyAppPipeline', {
  pipelineName: 'MyAppPipeline',
  synth: new ShellStep('Synth', {
    input: cdkSource, // CDK仓库默认检出到构建环境根目录
    additionalInputs: {
      // 网站仓库单独检出到website目录,避免路径冲突
      './website': websiteSource
    },
    commands: [
      // 1. 执行CDK仓库的构建逻辑
      'npm ci',
      'npm run build',
      // 2. 执行网站仓库的构建逻辑,可替换为你自己的构建命令
      'cd website',
      'npm ci',
      'npm run build',
      // 3. 将网站构建产物移动到CDK资产目录
      'mkdir -p ../assets/website-dist',
      'cp -r dist/* ../assets/website-dist/',
      'cd ..',
      // 4. 执行CDK synth生成云资源模板
      'npx cdk synth'
    ]
  })
});

第三步:部署阶段引用网站资产

在你的Stage对应的Stack中,直接引用刚才生成的网站资产目录即可,CDK会自动完成资产上传、资源部署的逻辑,示例如下(以部署到S3静态网站为例):

import { Bucket, BucketAccessControl } from 'aws-cdk-lib/aws-s3';
import { BucketDeployment, Source } from 'aws-cdk-lib/aws-s3-deployment';
import { CloudFrontWebDistribution } from 'aws-cdk-lib/aws-cloudfront';

// 原有资源定义
const websiteBucket = new Bucket(this, 'WebsiteBucket', {
  publicReadAccess: true,
  websiteIndexDocument: 'index.html',
});

// 直接引用synth阶段生成的网站产物
new BucketDeployment(this, 'DeployWebsiteAssets', {
  sources: [Source.asset('./assets/website-dist')],
  destinationBucket: websiteBucket,
  // 若配置了CloudFront,可在此添加缓存刷新规则
});

常见配置调整

  • 如果你需要仅指定路径变更时才触发流水线,可以在CodePipelineSource.gitHub的配置中添加路径过滤规则,或者关闭默认推送触发自定义EventBridge规则。
  • 如果网站构建和CDK构建的依赖环境冲突,可以把网站构建单独拆为一个前置Step,将产物作为输出传递给synth步骤即可。

补充说明:多源配置属于源阶段的扩展,网站构建逻辑属于构建(synth)阶段的一部分,所有资产的版本、存储、分发都由CDK Pipeline自动管理,不需要手动配置构件存储规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:24:05