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