使用 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