【问题标题】:How can I get AWS CodeBuild's outputted zip extracted in ElasticBeanstalk?如何在 ElasticBeanstalk 中提取 AWS CodeBuild 的输出 zip?
【发布时间】:2017-04-24 05:04:25
【问题描述】:

我正在尝试让 AWS CodePipeline 与 S3 源、CodeBuild 和 Elastic Beanstalk(nodejs 环境)一起使用

我的问题在于 CodeBuild 和 Beanstalk 之间。

我有 CodeBuild 通过工件输出最终 nodeJS 应用程序的 zip 文件。这是我的 CodeBuild buildspec.yml

version: 0.1

phases:
  install:
    commands:
      - echo Installing Node Modules...
      - npm install -g mocha
      - npm install
  post_build:
    commands:
      - echo Performing Test
      - npm test
      - zip -r app-api.zip .
artifacts:
  files:
    - app-api.zip

当我手动运行 CodeBuild 时,它成功地将 zip 放入 S3。当我运行 CodePipeline 时,它​​会将 /var/app/current 中每个 Elastic Beanstalk 实例的 zip 作为 app-api.zip

我希望它能够将 app-api.zip 提取为 /var/app/current。就像通过 Elastic Beanstalk 控制台界面手动部署一样。

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-elastic-beanstalk aws-codepipeline aws-codebuild


    【解决方案1】:

    首先,快速解释一下。 CodePipeline 将您指定为工件的任何文件发送到 Elastic Beanstalk。在你的情况下,你发送app-api.zip

    您可能想要做的是发送所有文件,但不要将它们打包在 ZIP 中。

    让我们将您的 buildspec.yml 更改为不创建 app-api.zip,而是将原始文件发送到 CodePipeline。

    version: 0.1
    
    phases:
      install:
        commands:
          - echo Installing Node Modules...
          - npm install -g mocha
          - npm install
      post_build:
        commands:
          - echo Performing Test
          - npm test
    #     - zip -r app-api.zip . **<< Remove this line**
    artifacts:
      files:
        - '**/*'
    # Replace artifacts/files with the value shown above
    

    【讨论】:

    • 如果没有压缩 - 您可能会遇到文件占用过多空间的问题,并且会阻止它通过管道传递给 ElasticBeanstalk。
    • @Georgij 这应该不是问题,因为无论如何都会在后台通过 CodePipeline as described here 压缩工件。上面的示例应该不会对工件大小产生任何重大影响。
    • 是的,你说得对,我写评论后发现。
    猜你喜欢
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    相关资源
    最近更新 更多