如何在Heroku上的部署中配置/设置命令

时间:2018-12-22 22:40:47

标签: laravel heroku

我正在将我的Laravel应用程序部署到Heroku。我为我的应用程序建立了连接到GitHub的管道。我将其配置为每当在develop分支上找到新的提交时自动再次部署。事情是我需要配置为在每个部署上运行其他命令,例如迁移数据库。

我找不到在Heroku UI中设置这些命令的选项。我该怎么办?

enter image description here

我找到了Heroku的发布阶段,但我想通过Heroku仪表板进行配置。在发布阶段,我必须将命令放在Procfile中。很难根据环境来运行和管理命令。

例如,在测试环境中,我可能想运行php artisan migrate --seed,但是在生产环境中,我可能会在不植入数据库的情况下运行迁移。

1 个答案:

答案 0 :(得分:1)

您可能更喜欢通过Web仪表板执行此操作,但是我不认为这是一个选择。 Procfile release phase方法效果很好。

release进程添加到您的Procfile,例如

web: vendor/bin/heroku-php-apache2 public/
release: php artisan migrate
  

发布阶段使您可以在部署新的release应用之前运行某些任务。发布阶段对于以下任务可能很有用:

     
      
  • 将来自应用程序的CSS,JS和其他资产发送到CDN或S3存储桶
  •   
  • 启动或无效缓存存储
  •   
  • 运行数据库架构迁移
  •   
     

如果发布阶段任务失败,则部署新版本,而当前版本不受影响。

编辑:发布命令不适用于持续集成。更好的解决方案是使用适当的CI工具。 Heroku does provide one,但您可以根据需要使用第三方CI工具。

要使用Heroku的CI工具,您需要在管道的设置中启用Heroku CI,并在存储库根目录中添加或更新名为app.json的文件。在app.json文件中,您可以configure the testing environment,它比简单地播种数据库要复杂得多。例如,您可能包括Heroku插件以提供Redis节点或设置自定义环境变量。

For PHP您的require-dev依赖项将自动安装在您的测试环境中。您可以将数据库植入test-setup script中,并在test script中定义测试命令。