0

我试图让AWS CodePipeline与S3源代码,CodeBuild和Elastic Beanstalk(nodejs环境)一起工作如何获取AWS CodeBuild在ElasticBeanstalk中提取的输出zip?

我的问题在于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它成功地把拉链进入S3。当我运行CodePipeline时,它将每个Elastic Beanstalk实例上的zip作为app-api.zip

我想要的是将app-api.zip解压为/ var/app /当前。就像通过Elastic Beanstalk控制台界面进行手动部署一样。

回答

2

首先,快速说明。 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