1

我正在尝试让 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 控制台界面进行手动部署一样。

4

1 回答 1

10

首先,快速解释一下。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
于 2017-04-23T21:04:25.087 回答