在ElasticBeanstalk上运行Grunt

我有一个节点应用程序需要咕噜做一个“构build”,才能成功执行应用程序。 (运行连续/缩小/源代码转速等)。 我已经在具有SSH访问权限的EC2实例上运行了,因为我可以通过SSH进入目录并在部署过程中运行Grunt。 但是,为了实现这一点,我现在将应用程序移动到ElasticBeanstalk,而且我很难让应用程序成功运行grunt。 迁移到EB的原因是保持SSH密钥closures活动服务器,以便这些EB实例设置为不具有ssh访问权限。

似乎没有官方文件可以提供,有没有人可以指出我能够达到上述目标? 我需要在应用程序启动之前执行grunt以使应用程序具有可用的文件(否则将会有404)。

运行grunt将会非常类似于运行gulp,所以,我将在下面包含我的configuration。

这是在我的项目的根目录.ebextensions文件夹中,名为01run.config 。 你可以有多个configuration文件,它们将以字母顺序运行(因此在开始时是01 )。

这基本上只是指示进程按顺序运行这些命令,而且是按字母顺序执行的,所以我相应地命名了它们。

commands: 01get_sudo: command: echo Defaults:root \!requiretty >> /etc/sudoers 02npm_install: command: sudo yum -y --enablerepo=epel install nodejs npm 03npm_install_bower: command: sudo npm install -g bower 04npm_install_gulp: command: sudo npm install -g gulp 05yum_install_git: command: sudo yum -y --enablerepo=epel install git container_commands: 01bower_install: command: sudo bower install --allow-root 02gulp_sass: command: sudo gulp sass 
  1. 获得sudo访问权限
  2. 用yum安装node.js和npm
  3. 安装凉亭(我的g process过程需要凉亭)
  4. 安装吞咽
  5. 安装git(需要由凉亭)
  6. 然后我运行两个容器命令,这是在npm安装之后和npm启动之前发生的:
    1. 凉亭安装
    2. 咕噜咕噜声

在你的情况下,你只需要删除bower和git安装,安装grunt-cli,然后运行grunt。


既然这样做了,在部署和提交构build的文件到git仓库之前,我已经完成了前面的工作。 至less有一个很好的学习经验,使我能够更多地控制由beanstalk部署的ec2实例。

这并没有完全回答这个问题,但是与Kevin B的最后一句话一致,我在Elastic Beanstalk之外做了一些包括构build在内的繁琐任务,并使用.ebignore来控制部署。 当.ebignore存在的时候, eb deploy跟着它而不是.gitignore 。 这使我可以控制Elastic Beanstalk以外的构build过程,同时保持构build工件不在我的git仓库中。

例如,如果构build工件转到.build /

的.gitignore

 node_modules .elastic_beanstalk ... .build 

.ebignore

 node_modules .elastic_beanstalk ... .git 

请记住在.ebignore中添加.git以防止部署本地git回购元数据。 另外,我发现eb deploy评估排除文件夹中的所有子文件夹,从而不必要地降低了部署速度。 在运行eb deploy之前,我不得不临时将node_modules移动其他地方,以加快速度。