首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用cdk编写buildspec yaml代码

如何用cdk编写buildspec yaml代码
EN

Stack Overflow用户
提问于 2022-03-09 08:43:21
回答 1查看 1.4K关注 0票数 1

我用cdk做代码构建

它可以接受作为yaml的buildspec,但是,我如何在cdk中做同样的事情呢?

我想做的就是这样,当然不管用,

我强行将yaml代码放入命令中。

代码语言:javascript
运行
复制
    const buildProject = new codebuild.PipelineProject(this, 'project', {
      environment: {// I guess I need to select ubuntu and image 4.0},
      buildSpec: codebuild.BuildSpec.fromObject({
        version: '0.2',
        phases: {
          build: {
            commands:['
              version: 0.2
                phases:
                    install:
                        runtime-versions:
                            docker: 18
                    build:
                        commands:
                            - apt-get install jq -y
                            - ContainerName="tnkDjangoContainer"
                            - ImageURI=$(cat imageDetail.json | jq -r '.ImageURI')
                            - printf '[{"name":"CONTAINER_NAME","imageUri":"IMAGE_URI"}]' > imagedefinitions.json
                            - sed -i -e "s|CONTAINER_NAME|$ContainerName|g" imagedefinitions.json
                            - sed -i -e "s|IMAGE_URI|$ImageURI|g" imagedefinitions.json
                            - cat imagedefinitions.json

                artifacts:
                    files:
                        - imagedefinitions.json
              
              ',         
            ],
          },
        }
      })
    });

另外,我想我需要选择映像来执行构建规范,比如Ubuntu

我可以把这些放在哪里?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-09 10:49:34

CDK不公开在同步时内联YAML构建规范的方法.您可以通过将现有的YAML解析为JS对象并将结果传递给BuildSpec.fromObject来实现这一点。

CDK的codebuild.Project为您提供了几种提供buildSpec的其他方法

  • BuildSpec.fromObject从同步时的键值对中插入构建规范.它应该遵循CodeBuild构建规范格式。CDK将在CloudFormation模板中输出一个字符串化的JSON。如果希望CDK输出YAML,请使用fromObjectToYaml。这两种方法都以键值对(类型:[key: string]: any;)作为输入,因此TS不能提供更多的打字帮助。
  • BuildSpec.fromSourceFilename告诉CodeBuild在运行时在源代码中使用buildspec文件。文件名在CloudFormation模板中传递。

下面是使用yaml包将YAML字符串解析为内联YAML输出的示例。请注意,环境是在buildspec之外定义的:

代码语言:javascript
运行
复制
import * as yaml from 'yaml';

const fromYaml = yaml.parse(`
  version: '0.2'
  phases:
    build:
      commands:
        - npm run build
`);

new codebuild.Project(this, 'YamlInYamlOutProject', {
  environment: {
    buildImage: codebuild.LinuxBuildImage.STANDARD_5_0, // Ubuntu Standard 5
  },
  buildSpec: codebuild.BuildSpec.fromObjectToYaml(fromYaml),
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71406505

复制
相关文章

相似问题

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