Skip to content

pipelines: failed to upload stage assets: Cloud assembly schema version mismatch #32744

@Tietew

Description

@Tietew

Please add your +1 👍 to let us know you have encountered this

Status: RESOLVED

Overview:

CDK pipelines are failing to publish assets created by CDK version 2.174.0 due to a schema version mismatch error.

Complete Error Message:

Error: Canot read asset manifest 'assembly-StackName-StageName/xxxxxxxx.assets.json': Cloud assembly schema version mismatch: Maximum schema version supported is 38.x.x, but found 39.0.0

Workaround:

Revert aws-cdk-lib to version 2.173.4 or less.

Solution:

No action needed. Rerunning the pipeline should now install cdk-assets@2.155.82 (at least), which supports schema version 39 and successfully publish the assets.


original post

Describe the bug

I have a CodePipeline built by CDK pipelines aws-cdk-lib/pipelines.
After upgrading CDK 2.174.0, action FileAsset failed with following error message:

Error: Canot read asset manifest 'assembly-StackName-StageName/xxxxxxxx.assets.json': Cloud assembly schema version mismatch: Maximum schema version supported is 38.x.x, but found 39.0.0

Regression Issue

  • Select this option if this issue appears to be a regression.

Last Known Working CDK Version

2.173.2

Expected Behavior

FileAsset action uploads assets for my stage.

Current Behavior

Build log: (some words are masked)

[Container] 2025/01/06 06:20:17.234247 Entering phase INSTALL
[Container] 2025/01/06 06:20:17.276438 Running command npm install -g cdk-assets@latest

added 114 packages in 12s

24 packages are looking for funding
  run `npm fund` for details

[Container] 2025/01/06 06:20:35.713480 Phase complete: INSTALL State: SUCCEEDED
[Container] 2025/01/06 06:20:35.713521 Phase context status code:  Message: 
[Container] 2025/01/06 06:20:35.753632 Entering phase PRE_BUILD
[Container] 2025/01/06 06:20:35.755169 Phase complete: PRE_BUILD State: SUCCEEDED
[Container] 2025/01/06 06:20:35.755184 Phase context status code:  Message: 
[Container] 2025/01/06 06:20:35.795870 Entering phase BUILD
[Container] 2025/01/06 06:20:35.797049 Running command cdk-assets --path "assembly-StackName-StageName/xxxxxxxxxx.assets.json" --verbose publish "xxxxxxxx:xxxxxxxx-ap-northeast-1"
Error: Canot read asset manifest 'assembly-StackName-StageName/xxxxxxxxxx.assets.json': Cloud assembly schema version mismatch: Maximum schema version supported is 38.x.x, but found 39.0.0
    at AssetManifest.fromFile (/usr/local/lib/node_modules/cdk-assets/lib/asset-manifest.js:20:19)
    at AssetManifest.fromPath (/usr/local/lib/node_modules/cdk-assets/lib/asset-manifest.js:39:30)
    at publish (/usr/local/lib/node_modules/cdk-assets/bin/publish.js:7:40)
    at /usr/local/lib/node_modules/cdk-assets/bin/cdk-assets.js:39:37
    at Object.handler (/usr/local/lib/node_modules/cdk-assets/bin/cdk-assets.js:62:15)
    at Object.runCommand (/usr/local/lib/node_modules/cdk-assets/node_modules/yargs/build/index.cjs:446:48)
    at Object.parseArgs [as _parseArgs] (/usr/local/lib/node_modules/cdk-assets/node_modules/yargs/build/index.cjs:2697:57)
    at Object.get [as argv] (/usr/local/lib/node_modules/cdk-assets/node_modules/yargs/build/index.cjs:2651:25)
    at main (/usr/local/lib/node_modules/cdk-assets/bin/cdk-assets.js:49:31)
    at Object.<anonymous> (/usr/local/lib/node_modules/cdk-assets/bin/cdk-assets.js:65:1)

[Container] 2025/01/06 06:20:35.982156 Command did not exit successfully cdk-assets --path "assembly-StackName-StageName/xxxxxxxxxx.assets.json" --verbose publish "xxxxxxxx:xxxxxxxx-ap-northeast-1" exit status 1
[Container] 2025/01/06 06:20:35.986643 Phase complete: BUILD State: FAILED

The latest cdk-assets seems not to support cloud assembly schema v39.

Reproduction Steps

Build a CDK pipeline CodePipeline and deploy it.

const pipeline = new pipelines.CodePipeline(this, 'Pipeline', {
  synth: new pipelines.ShellStep('Synth', {
    input: pipelines.CodePipelineSource.connection('repo/name', 'main', { connectionArn }),
    installCommands: ['yarn install'],
    commands: ['cdk synth'],
    primaryOutputDirectory: 'cdk.out',
  }),
});
pipeline.addStage(new MyStage(this, 'MyStage'));
pipeline.buildPipeline();

Possible Solution

cdk-assets v3.0.0-rc.111 may support v39.
But the install command npm install -g cdk-assets@latest is hardcoded here

installCommands: [
'npm install -g cdk-assets@latest',
],

Additional Information/Context

No response

CDK CLI Version

2.174.0

Framework Version

No response

Node.js Version

CodeBuild default

OS

CodeBuild Linux container

Language

TypeScript

Language Version

No response

Other information

No response

Metadata

Metadata

Assignees

Labels

@aws-cdk/pipelinesCDK Pipelines librarybugThis issue is a bug.management/trackingIssues that track a subject or multiple issuesp0potential-regressionMarking this issue as a potential regression to be checked by team member

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions