首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在新的代码管道阶段构建现有的CDK模块?

如何在新的代码管道阶段构建现有的CDK模块?
EN

Stack Overflow用户
提问于 2022-03-28 15:28:05
回答 1查看 336关注 0票数 1

我有一个旧的CDK模块,我想用AWS代码管道构建一个新模块。到目前为止,我一直在跟踪这个工作坊,最后得到了一个工作代码管道,该管道从CodeCommit获取源代码、构建项目并更新管道。我希望在管道中的下一个阶段是构建旧的CDK模块,在这里找到使用CDK 2的示例是很困难的。

除了研讨会之外,我还找到了一些例子,如这段视频这段视频

这些是我正在处理的文件:

cdk-codepipeline

代码语言:javascript
复制
#!/usr/bin/env node
import 'source-map-support/register'
import * as cdk from 'aws-cdk-lib'
import { PipelineStack } from '../lib/pipeline-stack'

const app = new cdk.App();
new PipelineStack(app, 'PipelineStack');

pipeline-stack.ts

代码语言:javascript
复制
import { Stack, StackProps } from 'aws-cdk-lib'
import { Construct } from 'constructs'
import {IRepository, Repository} from "aws-cdk-lib/aws-codecommit";
import {CodeBuildStep, CodePipeline, CodePipelineSource} from "aws-cdk-lib/pipelines";
import {exec} from "child_process";
import {BuildArtifactsStage} from "./stages/build-artifacts-stage";


export class PipelineStack extends Stack {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);

    const self = this
    const branchName: string = 'my-branch-name'

      const repository: IRepository = Repository.fromRepositoryName(self, 'SourceCode','my-repo-name')

      const pipeline = new CodePipeline(self, 'Pipeline', {
        pipelineName: `my-repo-name-${branchName}`,
        crossAccountKeys: false,
        selfMutation: true,
        synth: new CodeBuildStep('Synth', {
          input: CodePipelineSource.codeCommit(repository, branchName),
          installCommands: ['npm install -g aws-cdk'],
          commands: ['cd cdk-codepipeline','npm ci', 'npm run build', 'npx cdk synth', 'cd ..'],
          primaryOutputDirectory: 'cdk-codepipeline/cdk.out',
        }),
      })

      const buildArtifactsStage = pipeline.addStage(new BuildArtifactsStage(self, 'BuildArtifacts'))

  }
}

build-artifacts-stage.ts

代码语言:javascript
复制
import {Stage, StageProps} from "aws-cdk-lib"
import {Construct} from "constructs"
import {BuildArtifactsStack} from "./build-artifacts-stack";


export class BuildArtifactsStage extends Stage {
    constructor(scope: Construct, id: string, props?: StageProps) {
        super(scope, id, props);

        const buildArtifactsStack = new BuildArtifactsStack(this, 'BuildArtifactsStack')
    }
}

下面的commands:是我希望在代码管道的第四阶段执行的逻辑。build-artifacts-stack.ts

代码语言:javascript
复制
import {Stack, StackProps} from "aws-cdk-lib";
import {Construct} from "constructs";
import {CodeBuildStep} from "aws-cdk-lib/pipelines";

export class BuildArtifactsStack extends Stack {
    constructor(scope: Construct, id: string, props?: StackProps) {
        super(scope, id, props);

        new CodeBuildStep('BuildOldCdkModule', {
            commands: ['cd ../old-cdk-module', 'npm ci', 'npm run build'],
        })
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-03-31 16:59:33

我们正在探索非常相似的用例。我不是cdk专家,但希望这是有用的。

研讨会中的示例似乎只有一个从直接部署应用程序(旧版本)到部署部署应用程序的管道(相同的cdk应用程序,只是新版本)的cdk项目:

接下来,由于管道的目的是部署应用程序堆栈,所以我们不再希望主CDK应用程序部署原始应用程序。相反,我们可以更改入口点以部署我们的管道,而管道将反过来部署应用程序。为此,请在bin/cdk-workshop.ts . To中编辑代码

我偶然发现了下面的例子,它似乎更符合您正在做的事情,因为它有一个单独的cdk应用程序中的codepipeline。希望它能给你一些指点。但是,请注意,示例是cdk1:

https://medium.com/andy-le/building-a-dynamic-aws-pipeline-with-cdk-5d5426fc0493

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71649898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档