@aws- blocks/ 管道
CDK 管道基于 CI/CD 为 AWS Blocks 应用程序所构建.
每分支创建一款自移代码Pipeline V2. 每个管道:
- 通过 AWS 编码连接从 GitHub 调取来源( OAuth, 无符号)
- 运行合成步骤( 安装 +)
cdk synth(中文(简体) ) - 如果管道定义发生变化, 则自移动
- 在可选的人工核准和烘烤时间的情况下部署到订购的阶段
使用量
import { Pipeline } from '@aws-blocks/pipeline';
new Pipeline(stack, 'Pipeline', {
source: {
repo: 'my-org/my-app',
connectionArn: 'arn:aws:codeconnections:us-east-1:123456789012:connection/abc',
},
branches: [
{
branch: 'main',
stages: [
{ name: 'beta' },
{ name: 'prod', requireApproval: true, config: { domain: 'myapp.com' } },
],
},
],
stageFactory: (scope, stageConfig) => {
new MyAppStack(scope, 'App', { env: stageConfig.env });
},
});
对于ASync级工厂(例如, BlocksStack.create()),使用静态
Pipeline.create() 方法代替 new Pipeline()。 。 。 .
每阶段部署后步骤postStage(中文(简体) )
可选 postStage 道具运行 a 第二阶段 在一个阶段之后
部署——例如,一个消耗阶段部署产出的步骤。 被援引
每个部署阶段和返回步骤随该阶段的后部署而相接
动作 :
import { Duration } from 'aws-cdk-lib';
import { CodeBuildStep } from 'aws-cdk-lib/pipelines';
new Pipeline(stack, 'Pipeline', {
source: { repo: 'my-org/my-app', connectionArn: '...' },
branches: [{ branch: 'main', stages: [{ name: 'beta' }, { name: 'prod', bakeTime: Duration.minutes(10) }] }],
stageFactory: (scope, stageConfig) => new MyAppStack(scope, 'App', { env: stageConfig.env }),
postStage: ({ stage, stageConfig, source }) => [
new CodeBuildStep(`Smoke-${stageConfig.name}`, {
input: source, // the resolved pipeline source — see below
env: { STAGE: stageConfig.name },
commands: ['npm ci', 'npm run smoke'],
}),
],
});
钩子收到一个 PostStageContext数字 :
stage- CDK软件Stage返回步骤的附加.stageConfig整个阶段的配置,包括:env(舞台的目标) ; 读取,使一个员额步骤针对同一账户/区域.source- 那个 已解决的管道源文件集 这个舞台的分会. 用它来做一步input因此该步骤会与已经检查完的源头相悖. 这被曝光了 所以一个打电话的人 永远不用走 构造树和 字符串匹配内部阶段 ID 以重新发现源头( 它悄悄地打开) 任何内部重命名).
顺序 bakeTime。 。 。 . 当一个舞台同时出现 postStage 步骤和a
bakeTime{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}烤肉的脚步是用来 取决于 舞台后的步骤,如此烘焙
只有在它们完成而不是平行赛车之后才能开始。 正在返回
undefined (或 [])没有添加任何内容,使合成与管道相同
没有钩子.
控制合成运行时间
合成步骤的代码构建运行时间可以通过 synth.partialBuildSpec。 。 。 .
它接受三种形式:
- 录取 (单位:千美元)
undefined:合成步骤宣布Node.js 22为运行时间. 这是默认和推荐路径 . null: 明确选择退出。 没有partialBuildSpec被注入,所以 已合成的构建 spec 包含无runtime-versions块。 用这个带 自己的运行时间(例如通过synth.installCommands或依赖 构建图像的内置运行时间 .- A 类
BuildSpec:作为-is使用,取代了节点.js 22默认.
固定一个特定的节点.js版本
import { BuildSpec } from 'aws-cdk-lib/aws-codebuild';
new Pipeline(stack, 'Pipeline', {
// ...
synth: {
partialBuildSpec: BuildSpec.fromObject({
phases: { install: { 'runtime-versions': { nodejs: 20 } } },
}),
},
});
选择退出节点.js 22 默认值
过 null 完全压制注入的运行时间并自行管理:
new Pipeline(stack, 'Pipeline', {
// ...
synth: {
partialBuildSpec: null,
installCommands: ['n 20'], // or rely on the build image's default runtime
},
});