如何使用 AWS Codebuild 运行并行构建?

Kye*_*JmD 2 continuous-integration amazon-web-services continuous-deployment aws-codepipeline aws-codebuild

我正在尝试设置一个代码构建,其中我有一个模块可以为其他构建创建依赖项。这些其他构建将使用第一个构建生成的工件,并且这些构建应该并行运行。我正在查看 CodeBuild 的文档,似乎那里没有信息。我的 buildspec.yml 示例

version: 0.2

#env:
  #variables:
     # key: "value"
     # key: "value"
  #parameter-store:
     # key: "value"
     # key: "value"
  #git-credential-helper: yes

phases:
  #install:
    #If you use the Ubuntu standard image 2.0 or later, you must specify runtime-versions.
    #If you specify runtime-versions and use an image other than Ubuntu standard image 2.0, the build fails.
    #runtime-versions:
      # name: version
      # name: version
    #commands:
      # - command
      # - command
#  pre_build:
#    commands:
#       - mkdir artifacts
#       - pwd
#       - ls
  build:
    commands:
       - cd frontend
       - npm install
       - cd ..
       - cd othermodule
       - npm install
  #post_build:
    #commands:
     #  - cp -a $CODEBUILD_SRC_DIR/frontend/dist. 
      # - command
artifacts:
  files:
     - package-lock.json
     - node_modules/*
  base-directory: frontend
#cache:
  #paths:
    # - paths
Run Code Online (Sandbox Code Playgroud)

Mat*_*ava 6

CodeBuild 用于自动化构建步骤,而不是自动化整个 CICD 过程。在 CodeBuild 中,您指定buildspec.yml自动化需要在该特定构建中执行的一系列步骤。

如果您需要自动化构建序列,那么您拥有的最简单的选择是使用 CodePipeline,您可以在其中为 CICD 过程中的每个步骤创建阶段。在您的情况下,这意味着一个步骤(阶段)将是您在帖子中描述的 CodeBuild 操作,它将过渡到另一个阶段,您可以在其中指定另一个 CodeBuild 操作,并且可以指定这些操作以获取上一步的工件作为输入,您可以并行运行它们。

所以它看起来像这样

INPUT -> STAGE(执行初始构建)-> STAGE(并行指定多个构建操作 -在控制台中,这可以通过将它们水平放置而不是垂直放置来完成

另一种不使用 CodePipeline 的选项是将 Lambda 函数与 CloudWatch 事件一起使用。一旦构建完成,CodeBuild 就会发布事件。您可以将 Lambda 函数订阅到该事件并编写将根据需要执行以下构建的代码。

  • AWS CodeBuild 现在支持 Bitbucket。 (2认同)