使用 Travis、AWS Elasticbeanstalk 和 Docker 构建失败

Posted

技术标签:

【中文标题】使用 Travis、AWS Elasticbeanstalk 和 Docker 构建失败【英文标题】:Failure in build using Travis, AWS Elasticbeanstalk and Docker 【发布时间】:2020-10-13 19:37:17 【问题描述】:

我在使用 GitHub 作为存储库构建我的 React 项目时遇到一个问题,Travis 作为 CI,AWS ElasticBeanStalk 作为使用 Docker 运行我的应用程序的服务。我能够运行我的测试套件,但在那之后,它没有在 AWS 上部署我的应用程序,并且在 Travis 控制台中也没有出现任何错误,但以下情况除外:

下面是我的 Travis .yml 文件配置:

language: generic
services:
  - docker

before_install:
  - docker build -t heet1996/my-profile -f Dockerfile.dev .

script:
  - docker run heet1996/my-profile npm run test -- --coverage

deploy:
  provider: elasticbeanstalk
  region: "us-east-1"
  app: "My-profile"
  env: "MyProfile-env"
  bucket_name: "elasticbeanstalk-us-east-1-413920612934"
  bucket_path: "My-profile"
  on:
    branch: master
  access_key_id: $AWS_ACCESS_KEY
  secret_access_key: "$AWS_SECRET_KEY"
    

如果您需要更多信息,请告诉我

【问题讨论】:

【参考方案1】:

您可以尝试几件事:

您的脚本命令需要设置环境 var CI=true

所以

script:
  - docker run heet1996/my-profile npm run test -- --coverage

变成

script:
  - docker run -e CI=true heet1996/my-profile npm run test -- --coverage

AWS 还需要以不同的方式命名访问变量。

改变

access_key_id: $AWS_ACCESS_KEY
secret_access_key: "$AWS_SECRET_KEY"

access_key_id: "$AWS_ACCESS_KEY_ID"
secret_access_key: "$AWS_SECRET_ACCESS_KEY"

【讨论】:

谢谢@R。埃里克森它正在工作,但我在 AWS 控制台上收到 Error。 @HeetShah 这可能是真的。在您的 elasticbeanstalk Web 控制台中,向下查看“日志”并下载最后 100 行。在那里搜索 ERROR 或类似的东西。这应该告诉你发生了什么。【参考方案2】:

使用选项 --coverage,您的测试将挂起,等待输入。因此消息:“...在过去 10 分钟内没有收到任何输出...”。

在某一点上,--coverage 可能能够停止测试(正如一些用于该目的的测试),但我想这并不是为了那个目的,并且后续版本的 docker 删除了该行为。

您的测试必须结束,并且该结论是 Travis 开始部署的成功。

改用选项--watchAll=false。所以你应该有:

...
script:
  - docker run heet1996/my-profile npm run test -- --watchAll=false
...

这将解决您的测试永远不会结束的明显问题(这可能是唯一的问题)。之后,确保您的测试成功。然后,您可以担心其他问题,例如 AWS 上的身份验证等...

【讨论】:

以上是关于使用 Travis、AWS Elasticbeanstalk 和 Docker 构建失败的主要内容,如果未能解决你的问题,请参考以下文章

如何在 travis 部署脚本中运行 aws configure?

Travis CI 部署到 AWS ElasticBeanstalk

在aws中部署node js的方法都有哪些?

AWS 仅允许用户访问弹性 beanstalk 实例和存储

将 MongoDB 与 AWS Elastic Bean 应用程序一起使用

尝试通过 Elastic Bean 在 AWS 上部署我的应用程序时出错